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

關於自訂物件 Object Create 問題?

尚未結案
JuliusChen
一般會員


發表:13
回覆:8
積分:4
註冊:2005-06-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-13 11:39:43 IP:220.134.xxx.xxx 未訂閱
請教各位前輩: 我自訂一個物件. 有段程式碼如下: constructor TSearchText.Create(Aowner: TComponent); begin inherited Create(AOwner); //繼承原有的建構子 LblVisible := True ; //動態建構 Edit FEdit :=Tedit.Create(Self); FEdit.Parent:=Self; FEdit.Height:=22; FEdit.Width:=100; //動態建構 Button FButton:=TButton.Create(Self); FButton.Parent:=Self; FButton.Top:=FEdit.Top; FButton.Left:=FEdit.Left FEdit.Width; FButton.Width:=40; FButton.Caption :='搜尋'; //動態建構 Label FLabel:=TLabel.Create(Self); FLabel.Parent:=Self; FLabel.Left:=FEdit.Left FEdit.Width FButton.Width; Flabel.top:=Fedit.top; FLabel.Height:=FEdit.Height; FLabel.Width:=140; FLabel.Color:=clYellow; FLabel.AutoSize:=False; FLabel.Visible:=LblVisible; //動態建構 DBLookupListBox FDBLookupComboBox:=TDBLookupComboBox.Create(Self); //FDBLookupComboBox.Parent:=Self; FDBLookupComboBox.Parent:=TWinControl(AOwner); FDBLookupComboBox.Left:=FEdit.Left FEdit.Width FButton.Width; FDBLookupComboBox.top:=Fedit.top; FDBLookupComboBox.Height:=FEdit.Height; FDBLookupComboBox.Width:=140; FDBLookupComboBox.Visible:=False; //元件 Width:=FEdit.Width FLabel.Width FButton.Width 10; //元件的寬度 Height:=FLabel.Height 5; //元件的高度 ButtonOnClick:=dispose; //事件內容 TextOnChange:=TextKey; DBLCBOnExit:=DBLCBClick; //建立DataSet qyTemp := TADOQUERY.Create(APPLICATION.Owner); dsTemp := TDataSource.Create(APPLICATION.Owner); dsTemp.DataSet := qyTemp; if (Pos('WHERE',dstSQL) = 0) And (Pos('ORDER',dstSQL) = 0) Then dstSQL := dstSQL ' WHERE 1=1 ' ; qyTemp.Connection := Conn ; qyTemp.SQL.Text := dstSQL ' AND ' Column_No ' Like "' FEdit.Text '%"' ; qyTemp.Open; //顯示 DBLookupListBox FDBLookupComboBox.DataSource:=dsTemp; FDBLookupComboBox.DataField:=column_No; FDBLookupComboBox.ListSource:=dsTemp; FDBLookupComboBox.ListField:=column_No ';' column_Name; end; 我的問題是,有些屬性再我新增此物件時,並未取得, 可能執行時才會設定,我應該如何做比較好... 因為如此寫的話,我在新增物件時就會有error 出來, 當時有些物件並未設定.
Arlung Miao
初階會員


發表:9
回覆:44
積分:25
註冊:2004-08-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-14 19:51:13 IP:218.18.xxx.xxx 未訂閱
我想你的物件應該有連接字串之類的Property吧,所以你可以請把這些代碼放在該Property下面。比如:
...
private
  procedure FSetSQLStr(dstSQL: string);
published
  property SQLStr: string read FSQLStr write FSetSQLStr
...      procedure FSetSQLStr(dstSQL: string);
  begin
    if (Pos('WHERE', dstSQL) = 0) And (Pos('ORDER', dstSQL) = 0) Then begin
      dstSQL := dstSQL   ' WHERE 1=1 ' ;
    end;
    qyTemp.Connection := Conn ;
    qyTemp.SQL.Text := dstSQL   ' AND '   Column_No   ' Like "'   FEdit.Text   '%"' ;
    qyTemp.Open;        //顯示 DBLookupListBox
    FDBLookupComboBox.DataSource:=dsTemp;
    FDBLookupComboBox.DataField:=column_No;
    FDBLookupComboBox.ListSource:=dsTemp;
    FDBLookupComboBox.ListField:=column_No ';' column_Name;
  end;
end;
系統時間:2024-05-12 13:05:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!