delphi9 主窗体mainform   show的时候建立了login子窗体
login子窗体登录之后mainform.Menu := mainform.MainMenu1;如果mainform.Menu := mainform.MainMenu1;或者loginform := nil;程序退出的时候就会报错,请大家看看是什么原因啊

解决方案 »

  1.   

    问题补充一下,其他的窗口创建并关闭而且nil之后不会出错
      

  2.   

    一,保证mainform为主窗体;
    二,你最好不要动态得创建临时LOGIN窗体,先创建好LOGIN窗体,也就是说在工程文件里有LOGIN窗体,然后mainform里USES中应用,然后在MAINFORM窗体SHOW时,先把LOGIN窗体SHOWMODEL出来
      

  3.   

    这些都没有问题啊,而且并不只有这一个子窗体,其他的子窗体都是正常的,这有这个不能nil。
    二楼三楼的朋友不好意思了,光是创建关闭窗体代码贴上来没有什么意思,完整代码又太大了没法网上贴,不好意思
      

  4.   

    loginform := nil这个可以用不关啊。
    退出程序时,自然会注销的,前提是你创建的时候要:create(Application).
      

  5.   

    创建的时候我是用:
    loginform:=Tloginform.Create(Application);
    loginform.show;
    loginform.left := trunc((mainform.Width-330)/2);
    loginform.Top := trunc((mainform.Height-330)/2);
    创建的窗口。
    如果没有loginform:nil来结束窗口的话再次打开登录框就会出现错误的
      

  6.   

    应该不会啊,下次,你不要再CREATE。直接SHOW 就可以了。
      

  7.   

    如果第一次登陆之后关闭登录框时没有Action:=CaFree;的话登录框就一直显示,如果free了即使不nil第二次也不能直接show登录框,该怎么办啊?
      

  8.   

    就用我说的办法,保证没问题的,
    建一个login窗体,然后引用,
    用得时候想怎么用就怎么用,想显示就显示,想关闭就半闭,
    一个LOGIN不要搞那么复杂嘛。具体参见我四楼的回复。
    算了给你源码:工程窗体program Project1;uses
      Forms,
      Unit1 in 'Unit1.pas' {mainfrom},
      Unit2 in 'Unit2.pas' {loginform},
      Unit3 in 'Unit3.pas' {DataModule3: TDataModule};{$R *.res}begin
      Application.Initialize;
    //  Application.CreateForm(Tmainfrom, mainfrom);
    //  Application.CreateForm(Tloginform, loginform);
      Application.CreateForm(TDataModule3, DataModule3);
      loginform := Tloginform.Create(Application);
      loginform.ShowModal;
      if loginform.ModalResult = 1 then
      begin
        mainfrom := Tmainfrom.Create(Application);
        mainfrom.ShowModal;
      end;
      Application.Run;
    end.