Create Form Problem |
尚未結案
|
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
有一張search form,比幾個不同的form用,但每張form只會call到一張search form,即是話再call也只是原來的那張search form (showmodal)
不同form可以同時create那張search form (showmodal) 一開始的search form是不戴入程式,到了某一張form雖然的時間,便會call,我用方法是在要call這張form的其它forms到有一個叫 m_SearchForm : TSearchProducerForm, 我也有uses SearchProducer,但是我不太懂如何call,因為我declare m_searchform為tform就可以,但為tsearchproducerform就不能夠,因為那張search form會return一個數值給母form,所以會有自建function,但compile時會說undeclare identifier,那怎麼辦呢?
|
mustapha.wang
資深會員 發表:89 回覆:409 積分:274 註冊:2002-03-13 發送簡訊給我 |
|
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
|
ha0009
版主 發表:16 回覆:507 積分:639 註冊:2002-03-16 發送簡訊給我 |
|
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
ha0009
版主 發表:16 回覆:507 積分:639 註冊:2002-03-16 發送簡訊給我 |
你好: 你可以一開始便將 TSearchForm 建構完成,也可以使用我下列的範例。 type // 這個 TSearchForm 宣告是為了讓你了解整個架構。 TSearchForm = Class(TForm) public procedure Execute; end; TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private FSearchForm : TSearchForm; public constructor Create(AOwner: TComponent); override; function SearchForm : TSearchForm; end; implementation {$R *.dfm} { TForm1 } constructor TForm1.Create(AOwner: TComponent); begin FSearchForm := nil; // 在建構 TForm1 時將 FSearchForm 初始化為 nil; inherited; end; function TForm1.SearchForm: TSearchForm; begin // 判斷 FSearchForm 是否已經建構,如果沒有則建構一個新的 TSearchForm // 如果有則傳回 FSearchForm // 使用這個技巧可以在需要的時候才建立該項資源 if FSearchForm = nil then FSearchForm := TSearchForm.Create(self); result := FSearchForm; end; procedure TForm1.Button1Click(Sender: TObject); begin SearchForm.Execute; end; |
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
ha0009
版主 發表:16 回覆:507 積分:639 註冊:2002-03-16 發送簡訊給我 |
|
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
unit TestForm; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls; type
TForm3 = class(TForm)
SearchButton: TButton;
private
m_Form: TSearchForm;
{ Private declarations }
public
{ Public declarations }
end; var
Form3: TForm3; implementation {$R *.dfm} uses SearchForm; end. unit SearchForm; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs; type
TForm2 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end; var
Form2: TForm2; implementation {$R *.dfm} end. 在Unit TestForm中,我嘗試declare一個m_Form為TSearchForm,但郤是undeclare identifier,那麼我怎樣做呢?
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
unit TestForm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, SearchForm; // SearchForm 放在這裏 type TForm3 = class(TForm) SearchButton: TButton; private m_Form: TSearchForm; { Private declarations } public { Public declarations } end; var Form3: TForm3; implementation {$R *.dfm} //uses SearchForm; // 這行 mark 掉 end. unit SearchForm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm2 = class(TForm) private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} end. 在Unit TestForm中,我嘗試declare一個m_Form為TSearchForm,但郤是undeclare identifier,那麼我怎樣做呢? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |