我是delphi新手,求详解和代码
我的登录界面为子窗口(fsMDIChild),但是我想在我程序运行时,把主窗口(fsMDIFrom)和其它子窗口隐藏了,登录后再显示主窗口。我已将所有窗口的Visible属性改为False,没用。

解决方案 »

  1.   


    procedure TFm_Login.FormCreate(Sender: TObject);
    begin
      Fm_login.Visible := True;
      Fm_main.Visible := False;
      Application.ShowMainForm := False;
      cobUserName.Clear;
      with Dm_base.tbUser do
      begin
        First;
        while not Eof do
        begin
          cobUserName.Items.Add(FieldByName('UserName').AsString);
          Next;
        end;
      end;  
    end;procedure TFm_Login.BitBtn1Click(Sender: TObject);
    var
      cBaseRight,
      cRight,
      cUserPass,
      cUserId,
      cUserName:String;  bIsAdmin:Boolean;  iMenuItemCnt:Integer;
    begin
      //判断登录的用户.
      cUserName:=Trim(cobUserName.Text);
      if cUserName='' then Begin
        ShowMsg('用户名称不为空!',0);
        cobUserName.SetFocus;
        Abort;
      End;  with dm_base.tbUser do begin
        if not Locate('UserName',cUserName,[]) then
        begin
          ShowMsg('用户名称不存在!',0);
          cobUserName.SetFocus;
          Abort;
        end
        else begin  //取用户名及密码!
          cUserId   :=FieldbyName('UserNo').AsString;
          cUserName :=FieldbyName('UserName').AsString;
          cUserPass :=FieldbyName('UserPass').AsString;      if FieldbyName('IsAdmin').AsString='Y' then
            P_IsNotAdmin:=True
          Else
            P_IsNotAdmin:=False;
        End;    if Edit1.text<>cUserPass then begin
          ShowMsg('用户密码错,请重新输入!',0);
          Edit1.SetFocus;
          Exit;
        end;
      end;  Fm_main.StatusBar1.Panels[2].text:=' '+cUserId;
      Fm_main.StatusBar1.Panels[3].Text:=cUserName;
      Fm_main.StatusBar1.Panels[5].text:=' '+Formatdatetime('YYYY"年"MM"月"DD"日"',Date);  P_UserNo  :=cUserId;
      P_UserName:=cUserName;  Fm_main.Visible:=True;
      Fm_main.Enabled:=True;  Application.ShowMainForm:=True;
      

  2.   

    登录界面的代码就不用写了
    我将Fm_main.Visible := False;
      Application.ShowMainForm := False;
    这两句写了后运行程序,但是Frm_Login未显示出来啊
      

  3.   

    工程文件代码,我这里面有个logo窗体,你可以去掉var
      hMutex:HWND;
      Ret:Integer;
      hWinHwd:HWND;
      UserName:array[0..20] of char;
      fLength:dword;
      
    begin
      Application.Initialize;
      Application.Initialize;
      Application.Title:='CheckPrint.exe';
      hWinHwd:=FindWindow(nil,Pchar('CheckPrint'));
      SetForeGroundWindow(hWinHwd);
      ShowWindow(hWinHwd,SW_SHOW);
      Application.Title := '票据打印系统';
      hMutex:=CREATEMUTEX( nil,TRUE, Pchar('CheckPrint'));
      Ret:=GetLastError();
      if Ret<>ERROR_ALREADY_EXISTS then
      Begin
        Fm_Logo:=TFm_Logo.Create(Application);
        Fm_Logo.Show;
        Fm_Logo.Update;
        Application.CreateForm(TDm_Base, Dm_Base);
        Application.CreateForm(Tfm_main, fm_main);
        fLength:=20;
        GetUserName(UserName,fLength);
        if GetEnumValue(TypeInfo(TDesignUser),UpperCase(UserName))<>-1 then
        begin
          P_UserNo  :='Admin';
          P_UserName:='Admin';
          P_IsNotAdmin:=True;
        end
        else
          Application.CreateForm(TFm_Login, Fm_Login);
        Fm_logo.Hide;
        Fm_logo.Close;
        Application.Run;
      End;
      ReleaseMutex(hMutex);
    end.