我想在程序运行前,出现一个登陆窗口来验证用户..出现以下问题:
我在主窗口的oncreate事件中写了"login.show".在login窗口的"取消"按钮"中写了"self.close"结果就出错了..
顺便问一下..什么时候用form.create9owner0,,什么时候不用啊??

解决方案 »

  1.   

    不要在主窗口的oncreate事件中写"login.show".因为此时formlogin还没创建好呢。
    login窗口的"取消"按钮"中写"self.close"
    是想退出程序吗??那就写application.terminate;
    将project/option/mainform 选中mainform  //即将mainform作为整个工程的主窗体
    主窗体总是最先创建,且是自动创建的;主窗体关闭时程序终止,所以不能将tlogform
    作为主窗体,
    将formlogin 放在 project/option/auto_create forms 中
    项目文件如下:
    begin
      Application.Initialize;
      Application.CreateForm(TForm_main, Form_main);
      Application.CreateForm(TForm_login, Form_login);
      form_login.ShowModal;
      Application.Run;
    end;
    运行程序最先弹出的是formlogin ,当输入核对真确时弹出mainform且logform关闭,
    不用写:mainform.showmodal;
    当mainform关闭时,程序终止。但formlogin 的标题栏上不能有关闭按钮,可在formlogin 
    上放一个退出button,onclick事件写:application.terminate;
      

  2.   

    如果你要在窗体的Create或Show中关闭窗体,最好是用PostMessage(handle,WM_CLOLSE,0,0);
      

  3.   

    1 用postmessage(...,wm_close,...)
    2 只在创建窗口对象的时候
    --------------------------------------
    看!
    那支正飞向太阳的蛾子.....
    就是我!
    --------------------------------------
      

  4.   

    不要用SELF来对FORM本身进行CLOSE或FREE..不然很容易就出现寻址出错的提示..
    建议用Form1.Close之类的对像实例名来释放..