创建登陆窗体的一个技巧

用delphi开发一个需要先登陆才能继续的程序,就会有一个选择登陆窗口出现时机的问题。如果在主窗口准备工作都做完后再启动登陆窗口,会显得程序的启动过程缓慢。

而一开始就显示登陆窗口,等用户名密码校验通过后再启动主窗口并做数据初始化。这样看起来程序的启动迅速,只是登陆比较慢,客户往往比较理解。
问题是delphi默认把第一个创建的窗体做为MainForm,且这个属性是只读的,MainForm一关闭,程序就停止运行了。用登陆窗体作MainForm,登陆后再隐藏登陆窗口也是一个解决方法。那另外还有没有登陆成功后再创建MainForm的方法呢?

下面看看我的拙作,且作抛砖引玉。您有更好的方法,欢迎共享 ufo2003@126.com

在工程文件内更改如下:

program JST;

uses
  Forms,
  windows,
  Unit1 in 'Unit1.pas' {Form1},
  Unit7 in 'Unit7.pas' {DataModule7: TDataModule},
  Unit8 in 'Unit8.pas' {Form8},
begin
  Application.Initialize;
  Application.Title := 'JIT SYSTEM';
 form8:= tform8.Create(Application);  //form8是一个登陆窗体
 form8.ShowModal;  //因为登陆窗体不是主窗体,如果用户不登陆,直接关闭窗体后程序不进入消息循环,会立即结束。
  Application.Run;
end.

然后在 form8的登陆按钮内创建主窗体,如果用到数据模块,也可以在登陆按钮内创建然后连接数据库。
procedure TForm8.Button1Click(Sender: TObject);
begin

screen.Cursor:= crhourglass;  
if not assigned(DataModule7) then
    DataModule7:= tDataModule7.Create(application); //创建数据模块

    ……  //验证用户名和密码,通过后继续

      if not assigned(form1) then
                Application.CreateForm(TForm1, Form1); //创建MainForm关键在这一步。使用application的createform方法创建窗体和使用form类的create方法不同。application的createform方法如果检测到MainForm不存在,会把第一个用此方法创建的窗体作为MainForm。

……  //其他初始化工作     

 form1.Show;   //显示主窗口
              screen.Cursor:= crdefault;

              form8.ModalResult:= mrok;

end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值