先出现登录窗口,与后台数据库相连,验证通过后进入主程序界面。

解决方案 »

  1.   

    人人都这么懒的话...
    给你大概思路:
    代码关键在“确定”按钮上
    用户按下“确定”按钮后,将密码输入框即TEdit的内容与后台数据库用户表中的密码字段进行比较,相同则关闭登录窗口,启动主界面,否则报信息“密码错误”。
      

  2.   

    主程序
    begin
      Application.Initialize;
      Application.CreateForm(TFrmMain, FrmMain);
      Application.CreateForm(TDataMMain, DataMMain);
      Application.CreateForm(TFrmLLogin, FrmLLogin);
      if FrmLLogin.Enter <> 1 then
      begin
        Application.ShowMainForm := False;
        Application.Terminate;
      end;
      Application.Run;
    end;登陆界面程序
    {-----------------------------------------------------------------------
    -----------------------------------------------------------------------}
    function TFrmLLogin.Enter : integer;
    Var
      Buffer: PChar;
      i: Cardinal;
      s: String;
      Year,Month,Day: Word;
    begin
      FRetryEnter :=0;
      ADOSUserWIn.Connection := DataMMain.ADONMain;
      ADOQAccountset.Connection := DataMMain.ADONMain;
      Buffer := nil;
      i := 64;
      try
        with DataMMain.ADOSMainUser do
        begin
          CommandText := Format(SqlAccountuser,[G_sUserBranchCode,inttostr(G_iSelfAccount),' AND (Disable_I=0)']);
          Active := True;
        end;
        EditCode.Text := '';
        EditUserName.text := '';
        EditPassword.Text := '';
        ActiveControl := EditCode;
        Result := ShowModal;
      finally
        DataMMain.ADOSMainUser.Active := False;
        ADOQAccountset.Active := False;
        ADOQAccountset.Connection := nil;
      end;
    end;
    {*******************************************************************************
    *******************************************************************************}
    procedure TFrmLLogin.FormKeyPress(Sender: TObject; var Key: Char);
    begin
      if Key=#13 then
      begin
        Key:=#0;
        SelectNext(Activecontrol, True, True);
      end;
    end;
    {*******************************************************************************
    *******************************************************************************}
    procedure TFrmLLogin.EditCodeExit(Sender: TObject);
    var
      s: string;
    begin
      s := trim(EditCode.text);
      s := StringOfChar('0', 6-length(s))+s;
      EditCode.Text := s;
      if( DataMMain.ADOSMainUser.Locate('UserCode_C', s , [])) then
        EditUserName.text := DataMMain.ADOSMainUser.FieldValues['UserName_C']
      else begin
        MessageBoxStop1('User Code Error!');
        EditCode.SetFocus;
      end;
    end;
    {*******************************************************************************
    *******************************************************************************}
    procedure TFrmLLogin.ButtonOKClick(Sender: TObject);
    var
      s: string;
      iRow,iCol: Integer;
    begin
      if Trim(EditCode.Text)<>'' then
      begin
        s := Trim(EditCode.Text);
        s := StringOfChar('0', 6-length(s))+s;
        with DataMMain do
        begin
          if( ADOSMainUser.Locate('UserCode_C', Copy(s,1,6), [])) then
          begin
            EditUserName.text := ADOSMainUser.FieldValues['UserName_C'];
            IF (trim(ADOSMainUser.FieldValues['PassWord_C']) = trim(EditPassword.text)) then
            begin
              G_sUserCode := s;
              G_sUserName := EditUserName.text;
              G_sUserPassword := trim(EditPassword.text);
              ModalResult:=IDOK;
            end else
            begin
              INC(FRetryEnter);
              if FRetryEnter<=3 then
              begin
                MessageBoxStop1('Password Error!');
                EditPassWord.SetFocus;
              end else
              begin
                if FRetryEnter>3 then
                begin
                  MessageBoxStop1(Format(SNoPopedom,['Login']));
                  ModalResult:=IDCANCEL;
                end;
              end;
            end;
          end;
        end;
      end;
    end;
    procedure TFrmLLogin.EditCodeChange(Sender: TObject);
    begin
      EditUserName.text := '';
    end;procedure TFrmLLogin.SpdBtnCancelClick(Sender: TObject);
    begin
      ModalResult := ID_CANCEL;
    end;procedure TFrmLLogin.ButtonCancelClick(Sender: TObject);
    begin
      Application.Terminate;
    end;