贴纸是关于一只兔子的:delphi如何关闭启动窗体

来源:百度文库 编辑:神马品牌网 时间:2024/04/23 15:33:07
现在做了个程序,用了一个登陆框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;

把Form2设置成主窗体,Form1设置成AvailableForm,Form1在Form2 的OnCreate事件动态创建再用ShowModal就可以了。

Form1使用动态生成,到时 Form1.Action:=caFree;

Form1.visible := false;
不可以吗?