繼承問題(子有,但父無的control) |
答題得分者是:change.jian
|
GDMichael
一般會員 發表:27 回覆:36 積分:12 註冊:2004-10-13 發送簡訊給我 |
unit CustDataUnit; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, FrmCustData; type
TFCustDataForm= class(TForm)
BtnNew: TButton;
private
{ Private declarations }
protected
Procedure RefreshFrmRight();
public
{ Public declarations }
end; var
CustDataForm: TFCustDataForm; implementation {$R *.dfm} Procedure TFCustDataForm.RefreshFrmRight();
Begin
TBitBtn(FindComponent('BtnNew')).Visible := False;
End; end. unit ChildUnit; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, FrmCustData; type
TChildForm = class(TFCustDataForm)
BtnNew: TButton;
private
{ Private declarations }
public
{ Public declarations }
end; var
ChildForm: TChildForm; implementation {$R *.dfm} end. 以上的code是節錄的... 父的class有一個refreshright method,由於子類別的button都會有相同名稱,所以我想將refeshright(即refresh的control)放在父的class上,但好像不work,因為子類別用inherited時,只會執行父類別的那個refreshright,如果父類別沒有那個button就會error,有的話也只會作用在父的類別,請問怎麼解決呢?
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
GDMichael
一般會員 發表:27 回覆:36 積分:12 註冊:2004-10-13 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
hi,GDMichael: 不太瞭解你的意思.如果TChildForm的BtnNew的動作與TFCustDataForm一樣的話,那麼你的TChildForm.BtnNew並不需要再去寫code.另外,TFCustDataForm己經有的物件(如這裡的BtnNew),那麼繼承的Form也一定會有這個物件,不能刪除,也不能再新增一個同名的物件. 另外,如果還有問題的話,把Procedure TFCustDataForm.RefreshFrmRight()的code放上來會比較快幫你找到解答
|
GDMichael
一般會員 發表:27 回覆:36 積分:12 註冊:2004-10-13 發送簡訊給我 |
我的意思是指TDataForm裏面只是一個空form,什麼也沒有,這個form只當作為母form給其它form inherit,而真正存在的control,如tbutton,tedit等都只會在child form design time時才會出現的,但由於每張child form都有著相同的button,所以我想將部份控制這些child form的control的code放在tdataform,例子是:refreshright 由於childform會有new,edit,delete等button,所以我想在父的form時寫refreshright的code,好讓我不用在每個子form到寫上... 我有一個好奇的問題,如果父form有一個button,如"abcbutton",但在子form中郤只是一張空form,那麼子form是否還是繼承了呢?但真正我是看不到這個button在子form存在... 請讓我說多一點,我曾經試過在parent form中:
Self.Caption
然後在子form中inherited,結果回傳的是子form的名稱?請問為何呢?可否解釋一下何時inherited時會用了父的method,何時只會使用到子form的method呢? 問題太多,而且又有點離了題,但也請回覆一下,多謝幫忙
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
1.父form有的元件,子form一定有.沒有,那可能你操作有問題....,繼承的form產生,不能"只改source code"而己,要從IDE->NEW....裡去操作
引言: 我有一個好奇的問題,如果父form有一個button,如"abcbutton",但在子form中郤只是一張空form,那麼子form是否還是繼承了呢?但真正我是看不到這個button在子form存在...2.這是正常的,所有的code,只對該段code所屬的物件作用,不會去作用到其他的物件上.parent form中的程式,self.caption,如果執行時是從child進去的,那麼這個self就是child form;反之,如果是parent form觸發的,那self就是parent form. 引言: 請讓我說多一點,我曾經試過在parent form中: Self.Caption 然後在子form中inherited,結果回傳的是子form的名稱?請問為何呢?可否解釋一下何時inherited時會用了父的method,何時只會使用到子form的method呢? 問題太多,而且又有點離了題,但也請回覆一下,多謝幫忙 |
GDMichael
一般會員 發表:27 回覆:36 積分:12 註冊:2004-10-13 發送簡訊給我 |
引言:1.父form有的元件,子form一定有.沒有,那可能你操作有問題....,繼承的form產生,不能"只改source code"而己,要從IDE->NEW....裡去操作之前真的只是改改source code而已...郤不知道要這樣作的....但我想問一下,inherit後的control還是可以自由修改位置,大少和屬性嗎? 引言:2.這是正常的,所有的code,只對該段code所屬的物件作用,不會去作用到其他的物件上.parent form中的程式,self.caption,如果執行時是從child進去的,那麼這個self就是child form;反之,如果是parent form觸發的,那self就是parent form.雖然對"所屬物件",有點混亂,但大慨也能夠明白.... |
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
1.可以的,只要不刪掉,其他的都可以.所以,如果child form用不到,可以將其visible設為False. 2.再舉個例子,TStringList是繼承TStrings而來的.如果TStringList裡的code有inherited到Tstrings上面,那麼你認這段code會作用在TStrings上面還是TStringList上面?當然還是在TStringList上面,不然inherted就沒有意義了
引言:引言:1.父form有的元件,子form一定有.沒有,那可能你操作有問題....,繼承的form產生,不能"只改source code"而己,要從IDE->NEW....裡去操作之前真的只是改改source code而已...郤不知道要這樣作的....但我想問一下,inherit後的control還是可以自由修改位置,大少和屬性嗎?引言:2.這是正常的,所有的code,只對該段code所屬的物件作用,不會去作用到其他的物件上.parent form中的程式,self.caption,如果執行時是從child進去的,那麼這個self就是child form;反之,如果是parent form觸發的,那self就是parent form.雖然對"所屬物件",有點混亂,但大慨也能夠明白.... |
GDMichael
一般會員 發表:27 回覆:36 積分:12 註冊:2004-10-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |