begin
  FrmLogin := TFrmLogin.Create( Application );
  if frmLogin.ShowModal then
  begin
  Application.Initialize;    
  Application.Title := '客户服务管理系统';
  Application.CreateForm(Task, ask);
  Application.Run;
  end;
  
end.

解决方案 »

  1.   

    begin
      FrmLogin := TFrmLogin.Create( Application );
      if frmLogin.ShowModal = mrOK then
      begin
        Application.Initialize;    
        Application.Title := '客户服务管理系统';
        Application.CreateForm(Task, ask);
        Application.Run;
      end;end. //Note:
    //  FrmLogin 中,密码正确,则 ModalResult := mrOK
    //   否则 mrCancel
      

  2.   

    将登录窗体的确定按纽ModalResult:=mrOK
      

  3.   

    应用程序启动的第一个窗口即为主窗口,因上你的主窗口是登录窗口,最简单的办法是在主窗口的OnActive或OnShow事件中显示登录窗口,登录成功则继续,否则关闭应用程序。
    如果启支第一个窗口是登录窗口,进行登录后应释放登录窗口,然后再建立主窗口。
    如果你相获得更详细的信息,请邮 [email protected],不过,不要忘记给分哟!
      

  4.   

    to Musicwind(风里来雨里去):
      你的登录窗口一直没有释放掉,浪费内存。to ljhsoft(刘建华):
      这样的做法倒是可以,不过,呵呵,如果登录失败,主Form会闪一下,
      不信的话,可以试试。
      

  5.   

    我刚刚替朋友写了一个登录的程序。你需要的话,可以留下EMail
      

  6.   

    我也要了给我一份我的e-mail是[email protected]
      

  7.   


    ask.hide;
    ask.Free;
    Main.Show;     //主窗体
    Main.Update;
      
      

  8.   

    To BaldZhang(BaldZhang):
       登录的Form在程序运行结束后由Application来释放,不会浪费Windows内存,
       不过运行时,倒是的。
      

  9.   

    这种问题应当是在 Program Project1; 的文件里解决掉,而不是
    在主Form的OnShow或者OnActive里面处理。
    强烈谴责以下的用法:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Form2.Show; // 这是什么用法?
                  // 在类的实现部分,直接引用另外一个全局的变量,
                  // 这本身就没有注重类的封装!
                  // 我觉得,比较好的做法是:
                  // 1.给 TForm1 增加一个 Property ,  定义如下:
                  // Property OtherForm: TForm read FOtherForm write FOtherForm;
                  // 2.在 工程文件中 <project1.dpr>中:
                  // Application.CreateForm( TForm1, Form1 );
                  // Application.CreateForm( TForm2, Form2 );
                  // Form1.OtherForm := Form2;
                  // 然后此Click事件的代码就可以为:
                  // if OtherForm <> nil then
                  //   OtherForm.Show
                  // else
                  //   ShowMessage( 'OtherForm is nil!' ); 
      Form1.Button1.Enabled := False;
                  // 这个写法,问题大大!!!
                  // 根本就没有了解 TForm1 这个类的意义!
                  // Form1 本来就是 TForm1 的一个实例,在类的实现中,居然
                  // 调用类的实例的方法!   
                  // 正确的应当是:
                  // Button1.Enabled := False;
    end;//我的一点意见。欢迎批评指正。
      

  10.   

    真是受不了,我也写几句:project a;uses
      ...
    begin
       Application.Initialize;
       if Login then
       begin
         Application.CreateForm(Form1, TForm1);
         Application.Run;
       end;
    end;在LoginForm unit里实现以下函数:function Login: Boolean;
    begin
      with TLoginForm.Create(nil) do
      begin
        Result := ShowModal = mrYes;
        Free;
      end;
    end;
    上面的代码,我想不用解释吧。
      

  11.   

    Musicwind(风里来雨里去)的意见真是好呀,看来小地方也能看出名堂来呀!
      

  12.   

    其实这样也可以,在主FORM里的SHOW里写
    password:=Tpassword.CREATE(SELF);
    TRY
     IF PASSWORD.SHOWMODAL=MROK THEN
      
    ELSE
    FINALLY
      PASSWORD.FREE;
    PASSWORD:=NIL;
    END;
      

  13.   

    我也快受不了了!
    这个程序包括启动画面,登录界面,主窗体
    begin
      Application.Initialize;
      //启动界面的生成
      frmLoad := TfrmLoad.Create(Application);
      //显示启动
      frmLoad.Show;
      frmLoad.Update;
      //在启动画面显示过程,创建主窗体
      Application.CreateForm(TfrmMain, frmMain);
      //生成登录界面
      frmPassword := TfrmPassword.Create(Application);
      //登录界面生成后,释放启动画面 
      frmLoad.Hide;
      frmLoad.Free;
      //显示登录界面
      frmPassword.ShowModal;
      //我没有用ShowModal返回值,而是添加一个方法,判断是否通过登录
      if frmPassword.PasswordThrough then
        //若是登录成功,运行程序,否则停止程序
        Application.Run
      else
        Application.Terminate;
    end.在frmPassword中调用Close方法这样既不会没有释放资源,也不会产生跳动
      

  14.   

    WuHeHai(河海):
    请给我登录程序,[email protected]