delphi如何关闭启动窗体

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi如何关闭启动窗体相关的知识,希望对你有一定的参考价值。

现在做了个程序,用了一个登陆框FROM1,然后验证成功后到FROM2主窗体。但用以下方法关闭FROM1后,FROM2也跟着关闭了。用HIDE可以,但我不想用这种方法。
IF PASSWORD='CCTV' THEN
BEGIN
FORM2.SHOW;
FROM1.CLOSE;
END
END;

delphi通过窗口的close和窗口的show来显示和关闭窗口,需要注意主窗口关闭后其它所有窗口都会被关闭,其它窗口show之前如果是动态创建的窗口,需使用代码先创建完成后再show启动窗体。

下面是一个欢迎窗口的示例:

登陆窗体命名为:loginform.
找到工程文件(Project -> View Source),找到如下代码部分:
begin
   Application.Initialize;
   Application.CreateForm(TForm1, Form1);
   Application.CreateForm(Tloginform, loginform);
   Application.Run;//到此,程序执行
end.
登陆窗体可以设置成在程序执行前创建:
begin
   Application.Initialize;//初始化
   loginform:=tloginform.Create(application);//动态创建启动窗体
   loginform.Show;//显示
   loginform.Update;
   sleep(2000);//系统延时2秒
   loginform.Hide;//2秒后启动窗体隐藏
   Application.CreateForm(TForm1, Form1);
   Application.CreateForm(Tloginform, loginform);
   loginform.Free;//释放启动窗体
   Application.Run;
end.

制作启动(欢迎)窗体的另一种方法(转载...当然自己也使用过~~):
设置封面窗体属性使之符合启动封面要求。请修改下列封面窗体属性:
Position = PoscreenCenter
//运行时居于屏幕中央
Autosize = true
//自动适应Image控件,使启动图片完整显示
BorderStyle = bsnone
//窗口无标题栏及最大化、最小化及关闭按钮和边框
Name = splashform
程序代码解析 选择主菜单下的Project/View Scource 命令,打开这个项目的项目文件。根据下列代码进行修改。
program Project2;
uses
Forms,Controls,
Unit1 in \'Unit1.pas\' MainForm,
Unit2 in \'Unit2.pas\' SplashForm;
$R *.res
begin
Application.Initialize;
SplashForm :=TSplashForm.Create(Application);
//创建splash窗体
SplashForm.ShowModal;
//以模式对话框的方式显示splash窗体
if (SplashForm.ModalResult = mrOK) then
//如果定时时间到或单击了窗体上的图形
begin
Application.Title := \'测试Splash窗体\';
//设置应用程序的标题
Application.CreateForm(TMainForm, MainForm);
//自动方式创建的主窗体
SplashForm.Hide;
//将启动封面窗体隐藏
SplashForm.Release;
//将启动封面窗体清除
Application.Run;
end;
end.
随后在splash窗体上编写下列事件代码
procedure TSplashForm.Timer1Timer(Sender: TObject);
begin
SplashForm.ModalResult:= mrOK;
//定时时刻到后的事件处理程序
end;
procedure TSplashForm.Image1Click(Sender: TObject);
begin
SplashForm.ModalResult:= mrOK;
//单击splash窗体上图像的事件处理程序 ,当用户希望可以单击启动窗体的图片,而不用等待就可以进入//主窗体时,可以加上这一条件
end;
参考技术A 把Form2设置成主窗体,Form1设置成AvailableForm,Form1在Form2 的OnCreate事件动态创建再用ShowModal就可以了。本回答被提问者采纳 参考技术B Form1使用动态生成,到时 Form1.Action:=caFree; 参考技术C Form1.visible := false;
不可以吗?

delphi 如何在两个窗体间切换

form1为主窗体,当单击FORM1上的按钮时切换到FORM2。这怎么弄啊?

参考技术A 在form1的implementation下写入
uses unit2;

在form1的按钮中写
form2.show;
参考技术B form1.hidden();
form2.show();
参考技术C form2是form1的子窗体:
如果需要form2执行完关闭后,再继续执行form1,用form2的showmodal;
如果需要form2执行过程中,可以操作form1,用form2的show。
var
frm2:TForm2;
begin
frm2:=TForm2.Create(nil);
frm2.show;//不需要form2执行完
try
if frm2.showmodal=mrCancel then;//需要form2执行完
begin
//xxxxx
end;
finally
frm2.free;
end;

end;

以上是关于delphi如何关闭启动窗体的主要内容,如果未能解决你的问题,请参考以下文章

delphi平台,在一个主窗体上打开两个子窗体,也就是:打开一个子窗体之后,再打开第二个窗体第一个窗体不关闭

delphi 窗体的淡入淡出效果

delphi 如何通过单击一个窗体的按钮给一个frame的控件赋值

有空delphi子窗体关闭触发父窗体做出一系列改变的操作,主要就是子窗体关闭时能改变父窗体组件状态

有空delphi子窗体关闭触发父窗体做出一系列改变的操作,主要就是子窗体关闭时能改变父窗体组件状态

js 关闭子窗体时如何刷新父窗体