請問不同form之間的事件如何共享 |
答題得分者是:StrongLemon
|
oktony
中階會員 發表:67 回覆:132 積分:64 註冊:2004-12-05 發送簡訊給我 |
|
Zard
尊榮會員 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
引言: 2个不同的form裏面都有一個相同的button裏面的事件相同,如何從一個form的button事件調用另一個form的button事件?我已經use另一個form了,但是事件的sender參數不知道該怎麽填。謝了!請參考這篇http://delphi.ktop.com.tw/topic.php?TOPIC_ID=61115 和您所要問的問題一樣 |
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
|
oktony
中階會員 發表:67 回覆:132 積分:64 註冊:2004-12-05 發送簡訊給我 |
|
Zard
尊榮會員 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
給你一個範例, 注意紅字部份
// Form1 unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin // 秀出按鈕的主Form Caption. ShowMessage(TForm(TButton(Sender).Parent).Caption); end; end. ////////////////////////////////////////////////////////////////////// // Form2 unit Unit2; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Unit1, StdCtrls; type TForm2 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.DFM} procedure TForm2.Button1Click(Sender: TObject); begin Form1.Button1Click(Sender); end; procedure TForm2.FormCreate(Sender: TObject); begin Visible := TRUE; end; end. |
StrongLemon
高階會員 發表:10 回覆:166 積分:105 註冊:2004-04-18 發送簡訊給我 |
這我到覺得你既然Form2的Button1會呼叫Form1的Button1的事件,
那倒不如在Form1的Button1裡面的Code獨立成為共用Function。
Form1跟Form2再Use unit3就好了。不這樣做的情況是爾後如果哪
天突然Form1的Button1事件失效(剪下貼上或者刪除然後又貼一個命名
一樣的的)這樣會使Form2的Button1也會失效。 觀念:既然有共用的地方,就要把Code抽出來可以共用。
unit3; type TPublic:TForm public procedure doButtonThing(Sender:TObject); end;發表人 - StrongLemon 於 2004/12/19 00:38:07 |
dg822
一般會員 發表:14 回覆:38 積分:10 註冊:2004-12-16 發送簡訊給我 |
|
oktony
中階會員 發表:67 回覆:132 積分:64 註冊:2004-12-05 發送簡訊給我 |
|
oktony
中階會員 發表:67 回覆:132 積分:64 註冊:2004-12-05 發送簡訊給我 |
|
StrongLemon
高階會員 發表:10 回覆:166 積分:105 註冊:2004-04-18 發送簡訊給我 |
引言: 順便問一下,到底是用function還是procedure?用function的話好像必須給它指明返回類型。上面的範例我打錯了.. 用function or procedure其實是取決於你的需求.. 當然你也可以用傳Var來達到回傳多個結果 一般而言都不傳回結果用procedure 傳回一個結果用Function XXX():Boolean; 傳回多個結果procedure(Sender:TObject;Var AWantStr,AWanStr1:String;Var AWantboolean:Boolean); function(Sender:TObject;Var AWantStr,AWanStr1:String;Var AWantboolean:Boolean):Boolean; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |