在同一个项目中,在Form1中当用户填完数据一按"确定"按钮时关闭Form1,打开另一个窗口Form2(不是新建一个Form2窗口,而是Form2还没运行),这样一步步来引导用户完成操作,怎样在Form1中注册Form2?我在"确定"按钮中这样写
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.CreateForm(TForm2, Form2);
close;
end;
错误提示:
[Error] Unit1.pas(28): Undeclared identifier: 'TForm2'
问:
这样是不是会新建一个窗口呀,这样不行,要调用已有的窗口。
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.CreateForm(TForm2, Form2);
close;
end;
错误提示:
[Error] Unit1.pas(28): Undeclared identifier: 'TForm2'
问:
这样是不是会新建一个窗口呀,这样不行,要调用已有的窗口。
Uses Form2procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
close;
end;
我也看了上面的贴子,还是搞不定,谢了,
但是我个人认为如果传递数据的话用Form2.ShowModal比较好。
其实楼上做的功能可以让form2显示的时候隐藏form1 如果form1关闭啦form2当然也关闭啦,道理很简单因为form1是主要的窗体嘛
提供2中方法可以实现你的功能
一、
procedure TForm1.Button1Click(Sender: TObject);
var
MyForm:TForm2;
begin
myform := TForm2.Create(Self);//创建子窗体Form2;
Form1.Hide; //隐藏主窗体
try
MyForm.ShowModal;
finally
MyForm.Free; //完成后释放
end;end;
二、该方法比较简单不用调用过多的窗体,因为过多的窗体会延缓系统的响应机制,你可以用一个PageControl控件,隐藏标题栏,用按钮控制PageControl的ActivePage,比如按钮标题为下一步,对应的事件为PageControl1.ActivePage:=TabSheet2; 可以解决你说的问题,这样处理起来比用多个Tform灵活,程序设计起来结构紧凑,推荐使用第二种方法