線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1138
推到 Plurk!
推到 Facebook!

請問前輩有關自製元件屬性的問題

尚未結案
ucdesign2
一般會員


發表:24
回覆:33
積分:11
註冊:2002-10-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-21 15:43:39 IP:211.23.xxx.xxx 未訂閱
小弟想在自製元件中的屬性,當點取時會有下拉 資料供點取,就像在Form中的Align屬性點取時的 下拉資料般. 只是下拉的資料內容是自製元件在Create時自動 產生(所以無法事先去定義)如下列程式中之SL,請問如何實做出這樣 的屬性?煩請前輩指教!如有簡單的範例程式更好, 謝謝!! constructor TEditTable.Create(AOwner: TComponent); var SL: TStrings; Begin : : : FConnect:=TADOConnection.Create(self); FConnect.Name:='ADOConnection1'; FConnect.ConnectionString:='Provider=SQLOLEDB.1;Password=1209;Persist Security Info=True;User ID=sa;Initial Catalog=PRS;Data Source=server'; SL := TStringList.Create; FConnect.GetTableNames(SL,False); //小弟是想把SL中的資料放入自製元件中的Tablename屬性 //但小弟此自製元件不是繼承TADOTable
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-21 16:53:22 IP:218.163.xxx.xxx 未訂閱
ucdesign2 你好:    你可以參考看看 Delphi Source : C:\Program Files\Borland\Delphi6\Source\Property Editors\DBReg.pas    注意 TStringProperty Class 與 RegisterPropertyEditor Procedure 的運用.
ucdesign2
一般會員


發表:24
回覆:33
積分:11
註冊:2002-10-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-21 18:06:41 IP:211.23.xxx.xxx 未訂閱
謝謝版主的指教! 我會去參考您所說的資料,有不懂的地方 稍後再向前輩求教.
ucdesign2
一般會員


發表:24
回覆:33
積分:11
註冊:2002-10-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-21 18:20:56 IP:211.23.xxx.xxx 未訂閱
看了版主說的資料,實在看不懂!! 就像天書一樣!!應是小弟程度還不夠, 是否前輩能提供一個簡單的例子來 說明,謝謝!!
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-21 21:49:58 IP:218.32.xxx.xxx 未訂閱
1. Package Source:
requires
  designide,
  rtl,
  ...
2. Unit:
interface
uses
  Windows, Classes, Forms, StdCtrls, DesignIntf, DesignEditors ;
type
  TDumClass = class(TButton) // Dum Class
  private
    FTableName: string;
  published
    property TableName : string read FTableName write FTableName;
  end;      TTableNameProperty = class(TStringProperty) // Property Editor Class
  public
    function GetAttributes: TPropertyAttributes; override;
    procedure GetValues(Proc: TGetStrProc); override;
  end;
procedure Register;    implementation    { TTableNameProperty }    function TTableNameProperty.GetAttributes: TPropertyAttributes;
begin
  Result := [paValueList, paAutoUpdate, paSortList];
end;    procedure TTableNameProperty.GetValues(Proc: TGetStrProc);
var
  TableNames: TStrings;
  TableNum: Integer;
begin
  TableNames := nil;
  try
    TableNames := TStringList.Create;
    TableNames.Add('Table1'); // will add into Combobox item
    TableNames.Add('Table2');
    for TableNum := 0 to TableNames.Count - 1 do
      Proc(TableNames[TableNum]);
  finally
    TableNames.Free;
  end;
end;    procedure Register;
begin
  RegisterComponents('Standard', [TDumClass]);
  RegisterPropertyEditor(TypeInfo(String), TDumClass,
     'TableName', TTableNameProperty);
end;
發表人 - Mickey 於 2004/04/21 21:52:52
ucdesign2
一般會員


發表:24
回覆:33
積分:11
註冊:2002-10-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-22 08:27:06 IP:211.23.xxx.xxx 未訂閱
非常感謝Mickey版主的指導,謝謝!!
ucdesign2
一般會員


發表:24
回覆:33
積分:11
註冊:2002-10-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-22 17:55:28 IP:211.23.xxx.xxx 未訂閱
謝謝前輩的幫忙!在Design Time 時已可以運作, 但在執行時確出現下列錯誤訊息!! [Fatal Error] File not found: 'd:\vcl\lee\Proxies.pas' 不知原因為何?煩再請前輩釋疑,謝謝!!
xBug
一般會員


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-05-05 13:30:09 IP:61.30.xxx.xxx 未訂閱
版主,對不起,這一篇我 POST 錯了,可以幫我刪除嗎? 正確要 POST 是 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=49481 發表人 - xBug 於 2004/05/05 13:34:21
lijenyun
一般會員


發表:3
回覆:19
積分:9
註冊:2003-06-22

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-05-05 19:23:55 IP:210.244.xxx.xxx 未訂閱
引言: 謝謝前輩的幫忙!在Design Time 時已可以運作, 但在執行時確出現下列錯誤訊息!! [Fatal Error] File not found: 'd:\vcl\lee\Proxies.pas' 不知原因為何?煩再請前輩釋疑,謝謝!! < face="Verdana, Arial, Helvetica"> 在Package的requires區段加上designide
系統時間:2024-07-05 6:22:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!