自製 VCL 如何加入自己製的物件(如 Font),到屬性表中做展開 |
尚未結案
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
請教各位前輩 !!
自製 VCL 如何加入自己製的物件(如 Font),到屬性表中做展開 我如以下的程式作好後,在屬性表中顯示(+),但為何無法展開清單??
萬份謝謝各位前輩!!
type TJFDBEdit = class(TDBEdit) private { Private declarations } FJFModeColor : TJFDBEdit_Color; protected { Protected declarations } public { Public declarations } constructor Create(Aowner:TComponent);override; published { Published declarations } Property JFModeColor : TJFDBEdit_Color Read FJFModeColor Write FJFModeColor ; end; -------------------------------- TJFDBEdit_Color = class(TPersistent) private { Private declarations } FJFViewColor:TColor; FJFEditColor:Tcolor; FJFAddNewColor:Tcolor; // procedure Assign(Source: TPersistent); override; protected { Protected declarations } public { Public declarations } Owner: TComponent; published { Published declarations } Property JFViewColorA : TColor Read FJFViewColor Write FJFViewColor ; Property JFEditColorA : TColor Read FJFEditColor Write FJFEditColor ; Property JFAddNewColorA : TColor Read FJFAddNewColor Write FJFAddNewColor ; end; 發表人 - jeffreck 於 2004/10/17 11:02:20 |
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
hi,jeffreck:
如果你自己寫的元件屬性不是一般的簡單型態(如string,integer等)而是其他的自訂型態,那麼你必需自己註冊一個這種型態的編輯程式,讓Object Inspetor在你點選這種型態時,可以自動叫出你設計的編輯程式.試想,Delphi可能會知道你有什麼新訂的型態,還自動產生一個編輯設定的畫面讓你使用呢?你必需呼叫RegisterComponentEditor以註冊你自己的編輯程式
procedure RegisterComponentEditor(ComponentClass: TComponentClass; ComponentEditor: TComponentEditorClass);相關的說明,你可以查一下online help,也可以參考在Delphi目錄裡的\Source\ToolsAPI裡的source code |
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
引言: hi,jeffreck: 如果你自己寫的元件屬性不是一般的簡單型態(如string,integer等)而是其他的自訂型態,那麼你必需自己註冊一個這種型態的編輯程式,讓Object Inspetor在你點選這種型態時,可以自動叫出你設計的編輯程式.試想,Delphi可能會知道你有什麼新訂的型態,還自動產生一個編輯設定的畫面讓你使用呢?你必需呼叫RegisterComponentEditor以註冊你自己的編輯程式謝謝前輩,但還是試不出?? 有用以下二種方式.但不知那錯了,先改 RegisterPropertyEditor(TypeInfo(String), TJFDBEdit_Color, 'JFAddNewColorA', Designeditors.TStringProperty); ---------- RegisterComponentEditor( TJFDBEdit_Color,TDefaultEditor); 謝謝 change.jian 前輩procedure RegisterComponentEditor(ComponentClass: TComponentClass; ComponentEditor: TComponentEditorClass);相關的說明,你可以查一下online help,也可以參考在Delphi目錄裡的\Source\ToolsAPI裡的source code |
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
老大! 您連 TJFDBEdit_Color 物件都未建立。
當然屬性就無法展開。 constructor TJFDBEdit.Create(AOwner: TComponent);
begin
inherited Create(Aowner);
FJFModeColor :=TJFDBEdit_Color.Create;
end; 記得在Destory 要釋放 FJFModeColor.free 這樣就一切OK。 另外請加入 Assign的方式。
procedure Assign(Source: TPersistent);Override; procedure TJFDBEdit_Color.Assign(Source: TPersistent);
begin
if Source is TJFDBEdit_Color then
begin
FJFViewColor := TJFDBEdit_Color(Source).JFViewColorA;
FJFEditColor := TJFDBEdit_Color(Source).JFEditColorA;
FJFAddNewColor := TJFDBEdit_Color(Source).JFAddNewColorA;
end else inherited;
end; RegisterComponentEditor
通常是針對 較特殊的屬性為其製作編輯的方式。 發表人 - wameng 於 2004/10/17 21:49:41 發表人 - wameng 於 2004/10/17 21:51:51
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |