(初学者问)怎样关闭当前窗口时打开另一个窗口?

downkey 2003-09-13 09:06:32
在同一个项目中,在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'
问:
这样是不是会新建一个窗口呀,这样不行,要调用已有的窗口。
...全文
242 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
tohail 2003-09-14
  • 打赏
  • 举报
回复
我到 主窗体都关闭啦子窗体还不关闭啊?可能嘛?
其实楼上做的功能可以让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灵活,程序设计起来结构紧凑,推荐使用第二种方法
wzds2000 2003-09-14
  • 打赏
  • 举报
回复
同意 FSU(洋葱面) 和coolhuaer(猴子用电脑)的说法。
但是我个人认为如果传递数据的话用Form2.ShowModal比较好。
hejianling305 2003-09-14
  • 打赏
  • 举报
回复
只要form1不是主窗口就可以先显示form2再close form1
fuzhan820 2003-09-14
  • 打赏
  • 举报
回复
up
cnhgj 2003-09-14
  • 打赏
  • 举报
回复
写在FormCloseQuery事件中
lry1983 2003-09-13
  • 打赏
  • 举报
回复
我想:应该是主窗体没有设置好吧,如果你把FORM1做为主窗体的话,那么关闭后,程序当然会出错了。。
coolhuaer 2003-09-13
  • 打赏
  • 举报
回复
同意 FSU(洋葱面)

uses 编译时候会自动加上,不用自己写
  • 打赏
  • 举报
回复
以上几位同志的建议可以试试
downkey 2003-09-13
  • 打赏
  • 举报
回复
gz
downkey 2003-09-13
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1665/1665505.xml?temp=.151272
我也看了上面的贴子,还是搞不定,谢了,
FSU 2003-09-13
  • 打赏
  • 举报
回复
首先要应用 Form2
Uses Form2

procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
close;
end;
alexhn 2003-09-13
  • 打赏
  • 举报
回复
让FORM2先隐藏,在form1关闭后让2显示就行了

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧