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

Create Form Problem

尚未結案
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-29 10:30:04 IP:203.185.xxx.xxx 未訂閱
有一張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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-29 13:15:09 IP:218.80.xxx.xxx 未訂閱
不太明白,最好把程序附上来看看。 如果要定义m_SearchForm : TSearchProducerForm;就要在uses里加上TSearchProducerForm所在的unit。     久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听
------
江上何人初见月,江月何年初照人
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-29 14:08:07 IP:203.185.xxx.xxx 未訂閱
我的意思是我如何可以做到同一張名叫searchform,但可以比不同form去create/call,但每個searchform是獨立的
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-29 14:15:08 IP:61.222.xxx.xxx 未訂閱
 
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  searchform:TSearchForm; //TSearchForm為你的search form的class name
begin
  SearchForm:=TSearchForm.Create(Self);
  try
    SearchForm.ShowModal;
  finally
    SearchForm.Free;
  end;
end;
Chance36
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-29 14:15:43 IP:203.204.xxx.xxx 未訂閱
引言: 我的意思是我如何可以做到同一張名叫searchform,但可以比不同form去create/call,但每個searchform是獨立的
BorlandUser 你好 主要是不可同名,若不同名倒是可以 SearchForm1 : TSearchForm ; SearchForm2 : TSearchForm ; SearchForm1與SearchForm2有相同的行為模式且獨立,因為都是SearchForm的實體。
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-29 14:15:57 IP:61.30.xxx.xxx 未訂閱
你好:
  你只要自行宣告一個 tsearchproducerform 的物件變數既可。如下的範例
既是宣告一個 Tsearchproducerform 為Tform1 的私有變數。這樣你說你了解嗎    >    < src="http://sourceprovide.deepen.com.tw/K_Top/bp.gif">
        
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-29 14:45:37 IP:203.185.xxx.xxx 未訂閱
如果一開始我的tsearchform是沒有戴入去program,那麼是否也可以直接就用TSearchForm.Create(Self) ??
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-29 14:59:32 IP:61.30.xxx.xxx 未訂閱
你好:
  你可以一開始便將 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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-04-30 00:55:53 IP:218.102.xxx.xxx 未訂閱
我有一個疑問,為什麼我declare如m_Form: TSearachForm;在public那裏郤會說我undeclare identifier,但如果在一個button上create則沒有這個問題?
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-04-30 01:18:15 IP:61.56.xxx.xxx 未訂閱
你好: 重點是你的程式如何寫的我們並不清楚,你這樣問誰能給你正確答案 何不把有問題的 src="http://sourceprovide.deepen.com.tw/K_Top/bp.gif">
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-04-30 07:53:40 IP:203.218.xxx.xxx 未訂閱
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

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-04-30 07:56:04 IP:202.39.xxx.xxx 未訂閱
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,那麼我怎樣做呢?     
系統時間:2024-05-16 13:25:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!