我已经做好了一个程序,突然想起要给它在登陆时作一个用户检验,就新加了一个form,名字叫form2,在主窗体create事件里加入:
application.createform(tform2,form2);
form2.showmodal;主窗体的show事件里加入:
form2.close;
form2.release;再在form2的create事件里加入判断语句,如果通过的话,就执行:
form1(就是主窗体).showmodal;编译已经成功了,而且可以运行,但不知为什么,每一次主窗体出现后,关掉了form2,过了一会就会出现非法操作,使系统的问题么?还是这样写程序有问题?
那应该怎么在主窗体前加入一个窗体?
请高手指教,谢了!!

解决方案 »

  1.   

    密码登陆窗不是这样写的,给个例子你吧
    begin
      Application.Initialize;
      Application.CreateForm(TdmJxc, dmJxc);
      frmLogin := TfrmLogin.Create(nil);
      if frmLogin.ShowModal() = mrOk Then
        Application.CreateForm(TfrmMain, frmMain);  Application.Run;
    end.
      

  2.   

    也可以这样Main.OnCreate;
    var
      frmLogin:TFrmLogin;
    begin
      frmLogin:=TFrmLogin.Create(Self);
      try
        if frmLogin.showmodal=mrOK then begin
          if 密码不正确 then
            ApplicationTerminate;
        end
        else
          Application.Terminate;
      finally
        frmLogin.free;
      end;
    end;
      

  3.   

    这样写程序有问题
    可以在project----------view source中打开项目文件
    在这里加入form2
    例如:  Application.Initialize;
      Application.CreateForm(Tform1, form1);
      Application.CreateForm(Tfrmpass, frmpass);
      frmpass.ShowModal;
      if frmpass.verisok=false then//判断语句,如果不通过
        application.Terminate;
      frmpass.Free;
      Application.Run;verisok是frmpass的一个变量,这样只要输入的密码不对,verisok=false
    程序就退出了
      

  4.   

    请问,TfrmLogin是现成的类么?还是自定义的?
      

  5.   

    TfrmLogin当然是派生的类。其实你的代码:
    form2.close;
    form2.release;后面的form2.release;不用了,只要你调用close方法,它自动release。