program Project1;uses Forms, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {Form2};{$R *.RES}begin Application.Initialize; Application.CreateForm(TForm2,Form2); // your Child Form; Application.CreateForm(TForm1, Form1); // your main Form; Application.CreateForm(TForm2, Form2); Application.Run; end.
有很多方法 其一:在你要创建的子窗口里放一个Ttimer,定时enabled:=false; 在工程文件里面写上: program own;uses forms, main in 'Main.pas' , unit2 in 'unit2.pas' ;{$R *.RES} begin Application.Initialize; form2 := form2.Create(Application); form2.Show; form2.Update; while form2.timer1.Enabled do Application.ProcessMessages; Application.CreateForm(TMain, Main); form2.Hide; form2.Free; Application.Run; end.
这是显示非模式对话框,它可以与主窗口间切换,所以被主窗口切换回去,然后给Free了。改用模式窗口:
ChildForm.ShowModal;
这样等子窗口关闭才会继续下面的程序通常我这样使用:
ChildForm := TForm2.Create(self);
if ChildForm.ShowModal = mrOk then
begin
// 按OK后,要做的事
end;
ChildForm.Free;
你的TBitBtn的ModalResult设置为mrNone就好了
把属性 default 设为 false , 这样就不会在edit中按回车退出了
如果不用showmodal,那么就在子窗体的show过程中加上formmain.enable:=false
在子窗体退出时再将formain.enable:=true,这样很麻烦,而且也不符合面向对象的编程精神
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};{$R *.RES}begin
Application.Initialize;
Application.CreateForm(TForm2,Form2); // your Child Form;
Application.CreateForm(TForm1, Form1); // your main Form;
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
其一:在你要创建的子窗口里放一个Ttimer,定时enabled:=false;
在工程文件里面写上:
program own;uses
forms,
main in 'Main.pas' ,
unit2 in 'unit2.pas' ;{$R *.RES}
begin
Application.Initialize;
form2 := form2.Create(Application);
form2.Show;
form2.Update;
while form2.timer1.Enabled do
Application.ProcessMessages;
Application.CreateForm(TMain, Main);
form2.Hide;
form2.Free;
Application.Run;
end.