以前用PB写过一些小程序,后被Delphi强大的功能吸引,开始学习Delphi。一个考勤管理的例程断断续续啃了近一个多月,对窗口打开的顺序还是满头雾水,实在郁闷,几度萌生放弃的想法。该管理系统有两个窗口:主窗口mainForm和登录窗口Passworddlg。可我就总搞不明白,为什么程序启动后会自动地先打开窗口Passworddlg,而不是主窗口mainForm?
Main form: mainForm
Auto-creat form: mainForm, Passworddlgkaoqin.dpr如下:
program kaoqin;
uses
  Forms,
  main in 'main.pas' {mainForm},
  passdlg in 'passdlg.pas' {Passworddlg},
{$R *.res}
begin
  Application.Initialize;
  Application.CreateForm(TmainForm, mainForm);
  Application.CreateForm(TPassworddlg, Passworddlg);
  Application.Run;
end.
恳请高手指教,谢谢。

解决方案 »

  1.   

    把这句删掉试试:
      Application.CreateForm(TPassworddlg, Passworddlg);
      

  2.   

    你在工程选项要将你的主窗口选上,那就是你的第一个窗口。
    如果你在这里改,把
    Application.CreateForm(TPassworddlg,Passworddlg)写在
    Application.CreateForm(TmainForm,mainForm)的前面,那么TPassworddlg就变成了主窗口了,工程选项那里也自动变了。
      

  3.   

    谢谢楼上两位。
    但我的意思是,为什么没有作其它设置,
    Passworddlg窗口就能在主窗口前,第一个打开?
      

  4.   

    看看MainForm的OnCreate或者OnShow里面有没有show出Passworddlg的语句
      

  5.   

    有,很多。最简单的就是在PROJECT->Options的Forms选项卡中,设置Main Form就可以了
      

  6.   

    菜单方式选和在
    Application.CreateForm(TPassworddlg,Passworddlg)写在
    Application.CreateForm(TmainForm,mainForm)的前面,的方法是一样的,你改完这个代码,选项卡中,Main Form选项也自动变了
      

  7.   

    大家为什么眼睛都盯着MainForm不放哪?我觉得这个问题和那个窗口是主窗口根本没什么关系,主窗口只是最早被创建,被关闭时导致整个程序退出罢了,和程序执行的时候那个窗口先显示根本没有什么必然的联系的!!!
      

  8.   

    非常同意 elvis200_200(小能) 的說法
      

  9.   

    Auto-creat form: mainForm, Passworddlg---------------------
    实际上你这句已经是将两个窗口同时打开了,但是为什么显示后者为什么不显示前者,我也遇到过这个问题,但是实际上这样写也是没有什么意义上的,把Passworddle放到左边就可以了.因为你想显示前者以后在显示后者.(对吧)
      

  10.   

    打错了,是把passworddle 防到右边
      

  11.   

    谢谢楼上各位的帮助.
    但我还是没搞明白,
    为什么没有作其他设置,也没有其它语句,
    Passworddlg窗口就能在主窗口前,第一个被打开?
    顺便说句,Passworddlg窗口读取了初始化文件.ini的内容,
    难道这和初始化文件.ini有关系吗?
      

  12.   

    heluqing(鉴之小河〖挣大钱娶美女〗) :
         估计兄台是高手,何不点拨小弟一二?
         谢了.
      

  13.   

    跟ini沒關系
    這個問題已經說了,Passworddly第一個被打開的原因就是他第一個創建的...
      Application.Initialize;
      //下面哪個代碼創建的是哪個窗體,那麽那個窗體就是第一個被打開.
      Application.CreateForm(TPassworddlg, Passworddlg); 
      Application.CreateForm(TmainForm, mainForm);
      Application.Run;
    end.
      

  14.   

    GARNETT2183(極品狼王):
    kaoqin.dpr代码中mainForm第一个被创建,照你的说法,应该是第一个打开的.
    可实际上却不是啊!
    程序启动后,第一个窗体却是Passworddlg.kaoqin.dpr如下:
    program kaoqin;
    uses
      Forms,
      main in 'main.pas' {mainForm},
      passdlg in 'passdlg.pas' {Passworddlg},
    {$R *.res}
    begin
      Application.Initialize;
      Application.CreateForm(TmainForm, mainForm);
      Application.CreateForm(TPassworddlg, Passworddlg);
      Application.Run;
    end.