全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1322
推到 Plurk!
推到 Facebook!

請問不同form之間的事件如何共享

答題得分者是:StrongLemon
oktony
中階會員


發表:67
回覆:132
積分:64
註冊:2004-12-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-17 14:15:09 IP:222.77.xxx.xxx 未訂閱
2个不同的form裏面都有一個相同的button裏面的事件相同,如何從一個form的button事件調用另一個form的button事件?我已經use另一個form了,但是事件的sender參數不知道該怎麽填。謝了!
Zard
尊榮會員


發表:24
回覆:396
積分:539
註冊:2003-11-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-17 14:33:28 IP:61.64.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-17 14:36:51 IP:220.130.xxx.xxx 未訂閱
你可已試著用TActionList來實作看看.
oktony
中階會員


發表:67
回覆:132
積分:64
註冊:2004-12-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-17 18:31:10 IP:222.79.xxx.xxx 未訂閱
謝謝!Zard您好!我問的問題跟您說的那個有點不一樣,我是2個不同的form,用您的方法會出錯。謝謝jow,TActionList的方法已經會了,如果不用TActionList請問還有沒有別的方法?
Zard
尊榮會員


發表:24
回覆:396
積分:539
註冊:2003-11-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-17 19:27:44 IP:61.64.xxx.xxx 未訂閱
給你一個範例, 注意紅字部份
// 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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-18 03:49:28 IP:203.67.xxx.xxx 未訂閱
這我到覺得你既然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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-18 10:10:56 IP:203.198.xxx.xxx 未訂閱
同意楼上的大大。
oktony
中階會員


發表:67
回覆:132
積分:64
註冊:2004-12-05

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-12-18 13:23:20 IP:222.79.xxx.xxx 未訂閱
謝謝StrongLemon,你的回答我很滿意!
oktony
中階會員


發表:67
回覆:132
積分:64
註冊:2004-12-05

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-12-18 13:54:06 IP:222.79.xxx.xxx 未訂閱
順便問一下,到底是用function還是procedure?用function的話好像必須給它指明返回類型。
StrongLemon
高階會員


發表:10
回覆:166
積分:105
註冊:2004-04-18

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-12-19 00:46:30 IP:211.74.xxx.xxx 未訂閱
引言: 順便問一下,到底是用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;
系統時間:2024-05-22 3:56:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!