!@#$%^&*!@#$%^&*!@#$%^&*!@#$%^&* (46分)

0

011101

Unregistered / Unconfirmed
GUEST, unregistred user!
if Application.FindComponent('myform')<>nil then //
else begin
Application.CreateForm(tmyform,myform);
myform.Show;
end;
----------------------------------------------------------
我想自定義一函數或方法,傳入myform.請問怎麼寫呀?
function form_create(formname:string):boolean
begin
?????
end;
 
if Application.FindComponent('myform')<>nil then //
else begin
Application.CreateForm(tmyform,myform);
myform.Show;
end;
如果找到了怎样处理呢?


我想自定義一函數或方法,傳入myform.請問怎麼寫呀?
function form_create(formname:string):boolean
begin
?????
end;
我认为这里不应该传string,要别的东东,指针什么的,呵呵,我不懂的,学习
 
我也不懂的.
我傳form1就初始化form1,傳form2就初始化form2....
 
function form_create(formname:string):boolean
var
new_Form : TForm ;
begin
if Application.FindComponent(formname)<>nil then //
else
begin
Application.CreateForm(tmyform,new_Form );
new_Form.name := formname ;
new_Form.Show;
end;
end
 
謝謝樓上的.
不過不行呀.
Application.CreateForm([red]tmyform[/red],new_Form );
 
肯定行,前提是Tmyform 的单元你要 USES 他。下面的代码我自己 TEST 过的
... ...
var
Form1: TForm1;

implementation
uses unit2 ;
{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
function form_create(formname:string):boolean ;
var
new_Form : TForm ;
begin
if Application.FindComponent(formname)<>nil then //
else
begin
Application.CreateForm(TForm2,new_Form );
new_Form.name := formname ;
new_Form.Show;
end;
end;
begin
form_create(InputBox('请输入','FORM名称',''));
end;
 

这样写:
type
TMainForm = class(TForm)
……
procedure form_create(const Name: string);
End;
……
……
procedure TMainForm.form_create(const Name: string);
var
Child: tmyfor;
begin
Child := tmyfor.Create(Application);
Child.Caption := Name;
Child.Height := 600;
Child.Width := 800;
end;

myform这个窗体设置的时候FormStyle要设成fsMDIChild 。

调用如下:
if Application.FindComponent('myform')<>nil then //
else begin
form_create('新窗体');
myform.Show;
end;
 
mstar 同志:
Application.CreateForm(TForm2,new_Form )
//這樣那我只能初始化Tform2類呀.
我需要 傳form1就初始化form1,傳form2就初始化form2....
-----------------------------------------------------
冰封 同志
var
Child: tmyfor;

原因同上.
 
你可以加个判断
IF POS('FORM2',new_Form ) <> 0 THEN
Application.CreateForm(TForm2,new_Form );
 
你可以加个判断
IF POS('FORM2',new_Form ) <> 0 THEN
Application.CreateForm(TForm2,new_Form );
--------------------------------------------------
那我不如不定義過程或方法,直接判斷還好一點.
 
在代码的 Initialization 部分加上
RegisterClasses([TForm2]);
然后
function form_create(formname:string):boolean
var
new_Form : TForm ;
MyClass : TClass ;
begin
if Application.FindComponent(formname)<>nil then //
else
begin
MyClass := GetClass('T'+new_Form);
if myClass <> nil then
begin
Application.CreateForm( MyClass ,new_Form );
new_Form.name := formname ;
new_Form.Show;
end ;
end;
end;
 
謝謝樓上的.
看了您的貼我才想到傳三個參數.(以前認為只傳一個即可:))
-------------------------------------------------------------
function form_create(form_class: Tcomponentclass;
form_name: Tform
name: string): boolean;
begin
try
if Application.FindComponent(name)<>nil then
else begin
Application.CreateForm(form_class,form_name);
form_name.Show;
result:=true;
end;
except
MessageDlg('初始化失敗.',mterror,[mbok],0);
result:=false;
end;
end;
 
多人接受答案了。
 
好像还不对吆,看看Application.CreateForm的帮助;
无需传3个参数,需要的只是类和窗口变量名
Delphi syntax:
procedure CreateForm(FormClass: TFormClass
var Reference);
 

Similar threads

I
回复
0
查看
590
import
I
I
回复
0
查看
725
import
I
I
回复
0
查看
654
import
I
I
回复
0
查看
499
import
I
I
回复
0
查看
616
import
I
顶部