原件名稱如何用變數? |
尚未結案
|
mcho
初階會員 發表:57 回覆:106 積分:42 註冊:2002-11-11 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
引言: 請問個位大大: 我要Create 一個 FORM 如下: SLB1101:=TSLB1101.Create(self); FORM 的名稱"SLB1101"可用變數嗎?請高手們指點!謝謝! 何明昌你好: 不知道,有没有理解错你的意思: procedure TForm1.Button1Click(Sender: TObject); var SLB1101:TForm; begin SLB1101:=Tform.Create(self); SLB1101.Caption:=Edit1.Text; SLB1101.Show; end; 试试看 ——行径窄处,留一步与人行—— —— |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 請問個位大大: 我要Create 一個 FORM 如下: SLB1101:=TSLB1101.Create(self); FORM 的名稱"SLB1101"可用變數嗎?請高手們指點!謝謝! 何明昌 procedure TForm1.Button1Click(Sender: TObject); var tmpform: TForm; begin tmpform:= TForm(FindComponent(Edit1.Text)); if tmpform=nil then tmpform:= TForm.Create(self); tmpform.name:= Edit1.Text; tmpform.show; end;發表人 - P.D. 於 2004/06/15 10:30:04 |
yachanga
資深會員 發表:24 回覆:335 積分:296 註冊:2003-09-27 發送簡訊給我 |
引言: 請問個位大大: 我要Create 一個 FORM 如下: SLB1101:=TSLB1101.Create(self); FORM 的名稱"SLB1101"可用變數嗎?請高手們指點!謝謝! 何明昌Hi mcho您好: 若是要使用的Form 很多, 您可以考慮使用TFormClass 來實作.. 小弟有一個專案100多個Form 就是使用TFormClass 與TForm 實作差別如下 1. 用TFormClass不用 use Form..只要在include 在Porject 即可 2. 用TFormClass必須在每個Form 最後面加上幾行code var Form2: TForm2; implementation {$R *.dfm} Initialization RegisterClass(TFORM2); finalization UnregisterClass(TFORM2); end.參考範例如下: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public function CreateForm(className: String;Caption:String): TFORM; { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); Var tmpform: TFORM; begin tmpform:=CreateForm('TFORM2','FORM2 Caption'); 打開Form2 if tmpform is TFORM then tmpform.Show; end; function TForm1.CreateForm(className: String;Caption:String): TFORM; var c:TformClass; f:TForm; begin result:=nil; try c:=TFormClass(findclass(className)); //找到FormClass if (c<>nil) then//Check 此Form是否已 Create begin application.CreateForm(c,f); //用找到之class來Create Instance if Caption<>'' then f.Caption:=Caption; result:=f; end; except showmessage(className ' can not found'); end; end; end.~悠遊法國號~ |
mcho
初階會員 發表:57 回覆:106 積分:42 註冊:2002-11-11 發送簡訊給我 |
|
yachanga
資深會員 發表:24 回覆:335 積分:296 註冊:2003-09-27 發送簡訊給我 |
引言: hi! yachanga : 謝謝您指點,Form 可以開但參數要如何傳進去?可否再請教,我想您一定知 道吧!謝謝您! 何明昌Hi mcho您好 您指的參數是指Form Name嗎?? 假設您輸入在Edit1 輸入 "SLB1101" 則 試試看: procedure TForm1.Button1Click(Sender: TObject); Var tmpform: TFORM; begin tmpform:= CreateForm('T' Edit1.text, Edit1.text ' Caption'); if tmpform is TFORM then tmpform.Show; end;~悠遊法國號~ |
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
引言:P.D. 兄這樣的方式, FindComponent 的回傳值必是 nil 得用 Application.FindComponent 發表人 -procedure TForm1.Button1Click(Sender: TObject); var tmpform: TForm; begin tmpform:= TForm(FindComponent(Edit1.Text)); if tmpform=nil then tmpform:= TForm.Create(self); tmpform.name:= Edit1.Text; tmpform.show; end; |
mcho
初階會員 發表:57 回覆:106 積分:42 註冊:2002-11-11 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
yachanga
資深會員 發表:24 回覆:335 積分:296 註冊:2003-09-27 發送簡訊給我 |
引言: hi! yachanga : 除了傳入Form Name外還可傳入其他自訂參數嗎! 何明昌Hi mcho您好: 當然可以..只要是form 可以設定的property, 都可以透過參數方式設定. 小弟這邊在舉兩個例子..以您的聰明才智 , 其他的就讓您自己試試囉... 重點在 class="code"> function TForm1.CreateForm(className: String;Caption:String;Hint:String;Tag:Integer): TFORM; var c:TformClass; f:TForm; begin result:=nil; try c:=TFormClass(findclass(className)); //找到FormClass if (c<>nil) then//Check 此Form是否已 Create begin application.CreateForm(c,f); //用找到之class來Create Instance if Caption<>'' then f.Caption:=Caption; f.Hint:=Hint; f.Tag:=Tag; .............//form 的屬性都在這裡設定 result:=f; end; except showmessage(className ' can not found'); end; end; ~悠遊法國號~ |
mcho
初階會員 發表:57 回覆:106 積分:42 註冊:2002-11-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |