如何写一个程序,启动时登录窗口在主窗口前,主窗口功能不能用,只有当登录成功后,主窗口方可用.还要判断其权限.在线等

解决方案 »

  1.   

    在主窗口的create中把登陆窗口showmodule,验证登陆
      

  2.   

    那是不是在主窗口的create中showmodule登录窗口呢,那权限如何判断
      

  3.   

    在Project文件中祝窗口Show之前添加你的登陆窗口
    if 权限不合法 then Exit;
      

  4.   

    Project文件没有主窗口吧,dpr文件没有主窗口
      

  5.   

    在Project文件中的application.create之前运行登录窗口(先做一个登录窗口),权限什么的都可在该窗口中实现.当不满足权限时终止程序运行.暂不能给代码,我在网吧.
      

  6.   

    方法有三:
    1: 在dpr中修改:
    begin
      if Login = true then
      begin
        application.initialize;
        application.createform(...);
        ....
        application.run;
      end;
    end;
    2. 在主窗体的OnCreate事件中:
    procedure TmainForm.Oncreate(....);
    begin
      if Not Login(...) then
        Halt(1)
      else
       ......
    end;
    3.将2中的Halt(1)该为Application.terminate,也行,只是有时窗口会闪一下.另外,权限问题,你可以自己设,登陆的是否赋值,在主窗口的oncreat事件中判断一下,在根据权限设置就行了
      

  7.   

    我做的一般是在主窗口onshow的事件中写事件处理
    procedure ...
    begin
      frmLog := tfrmlog.create(application);
      frmlog.showmodal;
      if modalresult = true then
      begin
        //登录成功处理
      end;
      else 
      begin
        //登录失败处理
      end;
    end;
    然后如果登录窗口的返回值是true,即登录成功则主窗体打开
    否则中止程序,或者写你的处理
      

  8.   

    对我的答案的第一店做一下修改:
    在dpr中修改:建一个NewFormVar
    Formlogin:tformlogin;
    begin
      Application.Initialize;
      Formlogin:=Tformlogin.Create(nil);
      Formlogin.ShowModal ;
      if Formlogin.loginFlag=true then
      Begin
        Application.CreateForm(TFormmain, Formmain);
        Application.CreateForm(TFormlogin, Formlogin);
        Application.CreateForm(TDataModule1, DataModule1);
        Application.Run;
      end;
    End.