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

繼承父類事件

尚未結案
kissdelphi
一般會員


發表:7
回覆:9
積分:3
註冊:2003-01-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-11 10:34:04 IP:218.4.xxx.xxx 未訂閱
代碼很簡單,更方便說明問題: 父類: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public procedure Setcall;virtual; { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text:='this is base class call'; end; procedure TForm1.Setcall; begin Button1.OnClick:=nil; Button1.OnClick:=Button1Click; end; ------------------------------------------ 子類: unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, UNIT1, StdCtrls; type TForm2 = class(TForm1) btSetcall: TButton; procedure Button1Click(Sender: TObject); procedure btSetcallClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); begin Edit1.Text:=' this is inherited call'; end; procedure TForm2.btSetcallClick(Sender: TObject); begin inherited; Setcall; end; end. ------------------------------ ------- 問題是這樣的: 當我點擊Btsetcall後,繼承父類Setcall,其中將Button1Click重新指向 父類之Button1Click.而後在Form2中點擊Button1則會呼叫父類Button1click, 有何方法能讓其仍呼叫子類Button1click?(因為大多數時候,子類都會 inherited該事件) end.
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-12 20:27:39 IP:203.204.xxx.xxx 未訂閱
PO程式碼的方式請參考版規說明,煩請修改謝謝您的配合 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=58991 ********************* 如果您滿意答案,請結案 *********************
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
kissdelphi
一般會員


發表:7
回覆:9
積分:3
註冊:2003-01-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-13 09:43:38 IP:218.4.xxx.xxx 未訂閱
pcboy2: 已按你的意思修正,這個區的人氣好象不是太旺....
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-13 11:21:19 IP:218.15.xxx.xxx 未訂閱
kissdelphi 您好:  問題是這樣的: 當我點擊Btsetcall後,繼承父類Setcall,其中將Button1Click重新指向 父類之Button1Click.而後在Form2中點擊Button1則會呼叫父類Button1click, 有何方法能讓其仍呼叫子類Button1click?(因為大多數時候,子類都會 inherited該事件)     不知您的问题是不是想有时在Form2中點擊Button1时让其呼叫子類Button1click? 是的话,您可以试试如下: 在子类中:
procedure TForm2.btSetcallClick(Sender: TObject);
begin
 if Edit1.Text='this is inherited call' then  //满足一定条件时才让其继承父類Button1click
   begin
     inherited;
     Setcall;
   end
 else       //不然的话,让其呼叫子類的Button1click
   begin
     Button1.OnClick:=nil;
     Button1.OnClick:=Button1Click;
   end;
end;
试试看 <> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
系統時間:2024-04-19 9:04:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!