線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1232
推到 Plurk!
推到 Facebook!

TEdit與MonthCalender搭配使用的問題

答題得分者是:h@visli
Sane.Huang
一般會員


發表:1
回覆:0
積分:0
註冊:2005-09-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-30 14:06:51 IP:220.135.xxx.xxx 未訂閱
我是一個程式初學者, 程式寫作的方法可能有點膚淺,還望各位先進多多指教。    我建一個Edit1在Form1上,連點呼叫出有一MonthCalendar1的Form2,選擇日期後將日期填入Edit1中。
procedure TForm1.Edit1DblClick(Sender: TObject);
begin
  if Application.FindComponent('Form2')= nil then
    Application.CreateForm(TForm2, Form2);      Form2.Show;
end;    procedure TForm2.MonthCalendar1Click(Sender: TObject);
begin
  Form1.Edit1.Text:= DateToStr(MonthCalendar1.Date);
  Self.Release;
end;
問題是如果我這樣愚蠢的作法,就必須一個填入日期的TEdit對一個TMonthCalendar。 有沒有辦法讓所有必須填入日期的TEdit共用一個TMonthCalendar呢? 感謝 h@visli 的指教 讓初學程式的我又多了解了一種技巧 發表人 - Sane.Huang 於 2005/09/30 16:08:30
h@visli
資深會員


發表:103
回覆:429
積分:431
註冊:2004-02-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-30 14:35:34 IP:222.248.xxx.xxx 未訂閱
把所有Edit組件的OnDblClick事件全部統一指到一個去(如Edit1DblClick),再把代碼改為下面的樣子就可以了。    
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;    type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    procedure Edit1DblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    uses Unit2;    {$R *.dfm}    procedure TForm1.Edit1DblClick(Sender: TObject);
//所有的Edit組件的onDblClick事件都用這一個
begin
  if Application.FindComponent('Form2')= nil then
    Application.CreateForm(TForm2, Form2);
  Form2.WhichEdit := TEdit(Sender); 
 //也可以用其它標識方法來識別是哪一個Edit發出的DblClick動作
  Form2.Show;
end;    end.    ------------------------
Unit2
------------------------
unit Unit2;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls;    type
  TForm2 = class(TForm)
    MonthCalendar1: TMonthCalendar;
    procedure MonthCalendar1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    WhichEdit: TEdit;
  end;    var
  Form2: TForm2;    implementation    uses Unit1;    {$R *.dfm}    procedure TForm2.MonthCalendar1Click(Sender: TObject);
begin
  WhichEdit.Text:= DateToStr(MonthCalendar1.Date);
  Self.Release;
end;    end.
---------------------------- 於Delphi K.Top之上 博采眾家之長, 奉獻綿薄之力 --------------------------- 發表人 - h@visli 於 2005/09/30 14:42:26
------
------------------------
博采眾家之長,奉獻綿薄之力
------------------------
系統時間:2024-05-19 13:33:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!