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

如何依序判斷表單是否已存在(建立)?

尚未結案
nachi
初階會員


發表:40
回覆:116
積分:31
註冊:2003-02-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-05 22:13:19 IP:218.165.xxx.xxx 未訂閱
一個MDI的專案,若裡面有N個子表單,每當選擇一個表單時時,就要寫一段程式判斷表單是否已建立,想問看看是否有更簡易的方法。    例.有n個表單,則下面程式就要寫n次@@
procedure TForm1.N5Click(Sender: TObject);
begin
 if application.FindComponent('fomr5')=nil then
   begin
      application.CreateForm(tform5,form5);
      form5.show;
   end;
end;
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-05 22:52:39 IP:203.204.xxx.xxx 未訂閱
引言: 一個MDI的專案,若裡面有N個子表單,每當選擇一個表單時時,就要寫一段程式判斷表單是否已建立,想問看看是否有更簡易的方法。 例.有n個表單,則下面程式就要寫n次@@
procedure TForm1.N5Click(Sender: TObject);
begin
 if application.FindComponent('fomr5')=nil then
   begin
      application.CreateForm(tform5,form5);
      form5.show;
   end;
end;
nachi, 您好 您可以寫一個Function去判斷某個Form是否已存在, 不存在再Create就好了。 Sorry, 我不會Delphi只能給您觀念, 其餘的請您自行做了。 ======================= 是非終日有,不聽自然無 天下本無事,庸人自擾之
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-05 22:59:19 IP:219.130.xxx.xxx 未訂閱
procedure TForm1.NewForm(FormClass: TFormClass; Form: TForm; Name : String);
begin
  Form := TForm(application.FindComponent(Name));
  if not Assigned(Form) then
    application.CreateForm(FormClass,Form);
  Form.show; // always show it
end;    procedure TForm1.Form21Click(Sender: TObject);
begin
  NewForm(TForm2,Form2,'Form2');
end;    procedure TForm1.Form31Click(Sender: TObject);
begin
  NewForm(TForm3,Form3,'Form3');
end;
發表人 - Justmade 於 2003/05/05 23:01:50
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-05 23:14:33 IP:219.130.xxx.xxx 未訂閱
這樣寫程式碼雖較長一點,但可省回一個參數,且效能應更高 :
procedure TForm1.NewForm(FormClass: TFormClass; Form: TForm);
var i : integer;
begin
  for i := 0 to Screen.FormCount - 1 do
    if Screen.Forms[i] is FormClass then
    begin
      Form := Screen.Forms[i];
      break;
    end;
  if not Assigned(Form) then
    application.CreateForm(FormClass,Form);
  Form.show; // always show it
end;
 
procedure TForm1.Form21Click(Sender: TObject);
begin
  NewForm(TForm2,Form2);
end;
 
procedure TForm1.Form31Click(Sender: TObject);
begin
  NewForm(TForm3,Form3);
end;
nachi
初階會員


發表:40
回覆:116
積分:31
註冊:2003-02-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-06 07:43:34 IP:218.165.xxx.xxx 未訂閱
謝謝tect_state和justmade~我又學到一招了^^
系統時間:2024-05-17 3:03:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!