全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1750
推到 Plurk!
推到 Facebook!

如何替 TForm 物件增加新屬性?

尚未結案
xBug
一般會員


發表:27
回覆:17
積分:8
註冊:2003-06-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-28 17:43:38 IP:61.30.xxx.xxx 未訂閱
小弟想為 TFORM 物件加入一個新的屬性"FormID",然後將其儲存於『物件寶庫(如圖一)』,好讓其他的使用者可以輕鬆將其繼承下來使用,但希望修改 FormID 屬性時,可直接由『物件檢視器(圖二)』修改即可。    但無論小弟將新的屬性宣告於 Published 區段或 Public 區段,皆無法由物件檢視器(圖二)中看的新的屬性 FormID。    相請教各位大大,該如何時做此種需求? (圖一) (圖二) -------------------------------- 給我一個支點,我可以撐起整個地球
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-28 17:50:53 IP:211.20.xxx.xxx 未訂閱
xBug 你好
試試以下程式
Type
  TForm1 = Class(TForm)
    .....
    FFormID : Integer ;
  Private
    ....
  Public
    ....
    Property FormID:Integer Read FFormID Write FFormID ;
  End;    之後你可在物件檢視器中看到FormID的屬性了。
xBug
一般會員


發表:27
回覆:17
積分:8
註冊:2003-06-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-29 02:16:19 IP:61.219.xxx.xxx 未訂閱
我將您所描述的寫法,從頭到尾重新再做一次,可是仍沒有我所期望的結果出來,我將我做的過程,用圖片配合描述一一貼上來,請大大們能多指教!    步驟一:新增 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-29 02:54:51 IP:219.77.xxx.xxx 未訂閱
你把那個 public 的 property 放到 published 下,才可以在 Object Inpector 看到並更改。
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-29 03:00:11 IP:203.204.xxx.xxx 未訂閱
xBug 你好 我以為用自訂物件的觀念,就可以了,沒想到TForm竟不是這麼一回事,我剛試一下,真的無法在檢視器中顯示。好奇怪呀!
xBug
一般會員


發表:27
回覆:17
積分:8
註冊:2003-06-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-29 08:39:35 IP:61.30.xxx.xxx 未訂閱
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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-29 09:09:32 IP:202.39.xxx.xxx 未訂閱
參考: 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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-29 10:34:42 IP:61.30.xxx.xxx 未訂閱
小弟想問一下,我使用的 Delphi 版本是 7.0,RegisterCustomModule 這個程序在 Help 裡找不到,我參找了一些就文章及範例程式,發現應該 USES dsgnIntf,可是編譯時卻出現找不到 dsgnIntf.dcu。 我透過 Windows 搜尋功能搜尋 Borland 目錄以下所有檔案,也沒有發現 dsgnIntf* 的檔案。 想請問是不是 D7 版本尚有其他用法? -------------------------------- 給我一個支點,我可以撐起整個地球
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-04-29 10:46:21 IP:202.39.xxx.xxx 未訂閱
dsgnintf.pas單元在D6及D7中找不到的解決方法: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34245
xBug
一般會員


發表:27
回覆:17
積分:8
註冊:2003-06-10

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-04-29 14:14:11 IP:61.30.xxx.xxx 未訂閱
小弟的英文能力實在不怎麼樣,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.
-------------------------------- 給我一個支點,我可以撐起整個地球
系統時間:2024-06-20 20:14:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!