表單繼承後父表單原有程序無法使用?? |
答題得分者是:huwk
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
我寫一個資料處理表單
其中有一組Button(上筆,下筆,新增,修改,刪除,關閉等)
並寫一個程序,內容為更新Button是否可用,RefreshTools()如下: 但在之後繼承後又增加一個Button,
且要把它列入RefreshTools()一起控管
但增加這一程序後當按父表單的Button時,並不會去Call 繼承後表單的RefreshTools() 請教各位前輩要如何故才好??
另表單可以加入property,Methods,Events,可否教導一下?? uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ToolWin, ExtCtrls, ImgList, DB, ADODB, Grids, DBGrids,
StdCtrls, Mask, DBCtrls,TypInfo, Buttons, jkDBEdit,JKDBMemo, ActnList; type
TJkDBForm = class(TForm)
StbBottom: TStatusBar;
TobTools: TToolBar;
TolDBFirst: TToolButton;
TolDBPrior: TToolButton;
TolDBNext: TToolButton;
TolDBLast: TToolButton;
TolDBDelete: TToolButton;
TolDBEdit: TToolButton;
TolDBAdd: TToolButton;
......
procedure RefreshDataMode();
procedure RefreshTools(); //<<程序
|
huwk
資深會員 發表:26 回覆:340 積分:323 註冊:2002-04-03 發送簡訊給我 |
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
引言: 父代的method需定義成為 dynamic or virtual 子代的method需加上override..內部用 inherited叫用父代.. and "另表單可以加入property,Methods,Events,可否教導一下?? " 不太明白您的意思耶..謝謝 huwk 前輩, >>父代的method需定義成為 dynamic or virtual >>子代的method需加上override..內部用 inherited叫用父代.. 加入後以可以了,真是謝謝,原還以為不行且書上也沒有看到,真是感謝 >>"另表單可以加入property,Methods,Events,可否教導一下?? " >>不太明白您的意思耶.. 不好意思,我寫的不清楚,再說明一下: 我的意思是在Form中如何加入 屬性,方法,事件(property,Method,Event) 且繼承後,子代可以使用,因書上沒有且找不到,所以..... 如自製VCL加入屬性後,可以在object Inspector中設定 不知是否可以,還請前輩賜教!!! |
huwk
資深會員 發表:26 回覆:340 積分:323 註冊:2002-04-03 發送簡訊給我 |
引言: Delete.. 不好意思,我寫的不清楚,再說明一下: 我的意思是在Form中如何加入 屬性,方法,事件(property,Method,Event) 且繼承後,子代可以使用,因書上沒有且找不到,所以..... 如自製VCL加入屬性後,可以在object Inspector中設定 不知是否可以,還請前輩賜教!!!寫了一個不是很好的例子..將就著看. unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TChangeDateEvent = procedure(Sender:Tobject; pDate:Tdatetime) of object; TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private FMyDate: Tdatetime; FOnChangeDate: TChangeDateEvent; procedure SetMyDate(const Value: Tdatetime); procedure SetOnChangeDate(const Value: TChangeDateEvent); procedure ChangeDate(sender:Tobject; pdate:Tdatetime); { Private declarations } public { Public declarations } protected property MyDate:Tdatetime read FMyDate write SetMyDate; {事件} property OnChangeDate:TChangeDateEvent read FOnChangeDate write SetOnChangeDate; end; var Form1: TForm1; implementation {$R *.DFM} { TForm1 } procedure TForm1.SetMyDate(const Value: Tdatetime); begin if value <> fmydate then begin FMyDate := Value; if assigned(FOnChangeDate) then FOnChangeDate(self,value); end; end; procedure TForm1.Button1Click(Sender: TObject); begin mydate := now; end; procedure TForm1.SetOnChangeDate(const Value: TChangeDateEvent); begin FOnChangeDate := Value; end; procedure TForm1.ChangeDate(sender:Tobject; pdate:Tdatetime); begin self.Caption := formatdatetime('YYYY/MM/DD HH:MM:SS', pdate); end; procedure TForm1.FormCreate(Sender: TObject); begin OnChangeDate := changedate; end; end.
------
熊的學習 http://huwk.blogspot.com |
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |