繼承父類事件 |
尚未結案
|
kissdelphi
一般會員 發表:7 回覆:9 積分:3 註冊:2003-01-09 發送簡訊給我 |
代碼很簡單,更方便說明問題:
父類:
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 發送簡訊給我 |
|
kissdelphi
一般會員 發表:7 回覆:9 積分:3 註冊:2003-01-09 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
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;试试看 <> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ > |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |