如何替 TForm 物件增加新屬性? |
尚未結案
|
xBug
一般會員 發表:27 回覆:17 積分:8 註冊:2003-06-10 發送簡訊給我 |
小弟想為 TFORM 物件加入一個新的屬性"FormID",然後將其儲存於『物件寶庫(如圖一)』,好讓其他的使用者可以輕鬆將其繼承下來使用,但希望修改 FormID 屬性時,可直接由『物件檢視器(圖二)』修改即可。 但無論小弟將新的屬性宣告於 Published 區段或 Public 區段,皆無法由物件檢視器(圖二)中看的新的屬性 FormID。 相請教各位大大,該如何時做此種需求? (圖一)
(圖二)
--------------------------------
給我一個支點,我可以撐起整個地球
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
|
xBug
一般會員 發表:27 回覆:17 積分:8 註冊:2003-06-10 發送簡訊給我 |
我將您所描述的寫法,從頭到尾重新再做一次,可是仍沒有我所期望的結果出來,我將我做的過程,用圖片配合描述一一貼上來,請大大們能多指教! 步驟一:新增 TForm 物件。(請注意,此處不是 Application 喔)
步驟二:撰寫如下程式碼後,將其存檔為 UBASE_FORM.pas,並將其加入『物件寶庫』中。
type TBASE_FORM = class(TForm) private FFormID: integer; public property FormID: integer read FFormID write FFormID; end;步驟三:新增 Application 專案。 步驟四:再額外由『物件寶庫』中,新增改寫後的 TBASE_FORM 物件。(請注意,此處是用 Inherit 的方式加入) 步驟五:檢視『物件檢視器』,找不到剛剛新增的屬性 FormID。可是若以 CODING 方式,卻可以順利找到 FormID 屬性。 我的疑問是,該如何讓新增的屬性出現在『物件檢視器(Object Inspector)』中? -------------------------------- 給我一個支點,我可以撐起整個地球 |
TATSU
版主 發表:50 回覆:135 積分:62 註冊:2003-01-16 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
|
xBug
一般會員 發表:27 回覆:17 積分:8 註冊:2003-06-10 發送簡訊給我 |
Chance36、TATSU 大大: 還是感謝您們的幫忙,有撰寫過物件經驗,一看到這問題,我相信第一反應都與你相同,但是一旦實做時才會發現事情的真相,跟想像中不一樣;反正大家一起討論嘛... ------------------------------------ 我將程式碼改成如下,結果還是不行ㄟ...
type TBASE_FORM = class(TForm) private FFormID01: integer; FFormID02: integer; public property FormID01: integer read FFormID01 write FFormID01; published property FormID02: integer read FFormID02 write FFormID02; end;之前在做自定物件時,只要將新的屬性加入 Published 區段,都會出現在『物件檢視器(Object Inspector)』中,唯讀這招對 TForm 物件似乎不管用? 有沒有大大知道,該如何達成? -------------------------------- 給我一個支點,我可以撐起整個地球 |
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
參考:
Using Custom Design Modules
http://www.marcocantu.com/ddh/ddh15/ddh15e.htm How to Build Forms with Custom Properties and Events in Delphi
http://www.eagle-software.com/superforms.htm Defining Custom Events for Forms
http://www.undu.com/Articles/000516d.html
|
xBug
一般會員 發表:27 回覆:17 積分:8 註冊:2003-06-10 發送簡訊給我 |
小弟想問一下,我使用的 Delphi 版本是 7.0,RegisterCustomModule 這個程序在 Help 裡找不到,我參找了一些就文章及範例程式,發現應該 USES dsgnIntf,可是編譯時卻出現找不到 dsgnIntf.dcu。 我透過 Windows 搜尋功能搜尋 Borland 目錄以下所有檔案,也沒有發現 dsgnIntf* 的檔案。 想請問是不是 D7 版本尚有其他用法? --------------------------------
給我一個支點,我可以撐起整個地球
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
xBug
一般會員 發表:27 回覆:17 積分:8 註冊:2003-06-10 發送簡訊給我 |
小弟的英文能力實在不怎麼樣,hagar 大大提供的幾篇英文文章,雖知內容相當豐富,但礙於小弟英文不佳,尚無法完全體會其中意涵,只好東湊西湊,終於把我要的結果兜出來了。 http://delphi.ktop.com.tw/topic.php?topic_id=30128 最後解決小弟需求的是上述這一篇文章,步驟上是 OK 的,照著只是做就可以做出來,唯讀要補充說明的是:
RegisterCustomModule(TFBASE_FORM, TCustomModule);[補充說明一] RegisterCustomModule 這一個 procedure 在 7.0 版本中預設是找不到的,必須要 uses DesignIntf 才行,但當你 uses DesignIntf 時問題又來了,新的錯誤是找不到 DesignIntf.dcu。所以你要在 Requires Package 中,Add C:\Program Files\Borland\Delphi7\Lib\designide.dcp 進來就可以了。 [補充說明二] 單單 uses DesignIntf 是不夠的,編譯時還會出現無法識別 TCustomModule,此時需要額外再 uses DesignEditors 才行。 附上我測試的範例程式,給大家參考,也謝謝大家的幫忙。 unit UBASE_FORM_REG; interface uses DesignIntf, DesignEditors, UBASE_FORM; procedure Register; implementation procedure Register; begin RegisterCustomModule(TFBASE_FORM, TCustomModule); end; end.-------------------------------- 給我一個支點,我可以撐起整個地球 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |