⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ufrmlogon.pas

📁 a voice guide client ,it is the second part of voice guide center
💻 PAS
字号:
unit uFrmLogon;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  StrUtils,
  Dialogs, ExtCtrls, StdCtrls, Buttons, ComCtrls, uBaseDBAutoUpgrade,
  uBaseNetTCPConnectList, uBaseDBUtils, ufrmUpgradeOption;

type
  TfrmLogon = class(TForm)
    Image1: TImage;
    StatusBar1: TStatusBar;
    Label1: TLabel;
    Label2: TLabel;
    cbUserName: TComboBox;
    edPassword: TEdit;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    imgUpgrade: TImage;
    procedure BitBtn1Click(Sender: TObject);
    procedure leUserNameEnter(Sender: TObject);
    procedure leUserNameExit(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure imgUpgradeClick(Sender: TObject);
  private
    { Private declarations }
    baseNetTCPConnect: TBaseNetTCPConnectList;
    fProgressBar: TProgressBar;
    fWorkCount: Integer;

    function IsLegal: Boolean;
    //Prograss Bar
    procedure ProgressCreate;
    procedure ProgressDestroy;
    procedure Progress(Sender: TObject; Worked, Total: Integer);
    procedure EditHistoryLogName;
    procedure onGetBestHost(_sender: TObject; _host: string);
    procedure checkBestDataHost;
    procedure checkUpgrade(_is_upgrade_map: Boolean = False);
  public
    { Public declarations }
    function Execute: Boolean;
  end;

var
  frmLogon: TfrmLogon;

implementation

uses uPubFun, uDm, uFrmMain, uFrmOption, uTaxiPub, uGPSClientLanguage;

{$R *.dfm}

{ TfrmLogon }

function TfrmLogon.Execute: Boolean;
begin
  fWorkCount:= 0;
  ActiveControl:= cbUserName;
  cbUserName.Items.CommaText:= gHistoryLogNames;
  if cbUserName.Items.Count>0 then cbUserName.ItemIndex:= 0;
  edPassword.Text:= '';
  Result:= ShowModal= mrOk;
end;

procedure TfrmLogon.BitBtn1Click(Sender: TObject);
begin
  ShowOption;
end;

procedure TfrmLogon.leUserNameEnter(Sender: TObject);
begin
  if (Sender is TWinControl) then
    StatusBar1.SimpleText:= (Sender as TWinControl).Hint;
end;

procedure TfrmLogon.leUserNameExit(Sender: TObject);
begin
  if (Sender is TControl) then
    StatusBar1.SimpleText:= '';
end;

function TfrmLogon.IsLegal: Boolean;
begin
  Result:= not ((cbUserName.Text= '')or (edPassword.Text= ''));
end;

procedure TfrmLogon.BitBtn2Click(Sender: TObject);
var
  LogState: TLnkDataState;
  sLogState: string;
  IdSel: Integer;
begin
//**************************************
  if not gGpsOnLine then begin
    ModalResult:= mrOk;
    gLogState:= lsLogOn;
    gPassWd:= edPassword.Text;
    frmMain.ShowFunctionByPurview;
    Exit;
  end;
//**************************************

  (Sender as TBitBtn).Enabled:= False;
  try
    if not IsLegal then begin
      StatusBar1.SimpleText:= '用户名、密码不能为空';
      Exit;
    end;
    gLogState:= lsLogOff;
    gLogName:= cbUserName.Text;
    gPassWd:= edPassword.Text;
    ProgressCreate;
    try
      Application.ProcessMessages;
      LogState:= frmMain.LinkDataSvr(True);
    finally
      ProgressDestroy;
    end;
    case LogState of
      ldsNone     : sLogState:= '停止登录';
      ldsLinkErr  : sLogState:= '无法检测到服务器';
      ldsPwdErr   : sLogState:= '口令或者密码错误';
      ldsNoTaxiAccount:  sLogState:= '不属于出租业务账号';
      ldsAccountDisable: sLogState:= '账号被禁用';
    else
      sLogState:= '';
    end;
    if sLogState<>''
    then begin
      IdSel:= Application.MessageBox(
      PChar('在联接、登陆服务器过程中出现错误,'#13#13'原因:'+ sLogState),
      '提示', MB_ABORTRETRYIGNORE+ MB_ICONERROR+ MB_DEFBUTTON2);
      case IdSel of
        IDRETRY: ;
        IDABORT, IDIGNORE: ModalResult:= mrCancel;
      end;
    end else begin
      frmMain.ShowFunctionByPurview;
      frmMain.AddDebugInfo('ShowFunctionByPurview');
      ModalResult:= mrOk;
      gLogState:= lsLogOn;
      //frmMain.FlushStateIcon;
      //TaskWatchBegin(False);
      EditHistoryLogName;
      frmMain.AddDebugInfo('DoAfterLogon Begin');
      frmMain.DoAfterLogOn;
      frmMain.AddDebugInfo('DoAfterLogon End');
    end;
  finally
    (Sender as TBitBtn).Enabled:= True;
    StatusBar1.SimpleText := GPSClientLanguageUtils.GetTranslatedText(StatusBar1.SimpleText);
  end;
end;

//Progress
procedure TfrmLogon.Progress(Sender: TObject; Worked, Total: Integer);
begin
  if Assigned(fProgressBar) then begin
    Inc(fWorkCount, Worked);
    fProgressBar.Position:= fWorkCount;
    fProgressBar.Max:= Total;
    Application.ProcessMessages;
  end;
end;

procedure TfrmLogon.ProgressCreate;
begin
  fProgressBar:= TProgressBar.Create(Self);
  StatusBar1.InsertControl(fProgressBar);
  fProgressBar.Align:= alClient;
  uDm.DataModule1.GetDataProgress:= Progress;
end;

procedure TfrmLogon.ProgressDestroy;
begin
  StatusBar1.RemoveControl(fProgressBar);
  FreeAndNil(fProgressBar);
  uDm.DataModule1.GetDataProgress := nil;
end;

procedure TfrmLogon.EditHistoryLogName;
var
  slTemp: TStringList;
  i: Integer;
begin
  slTemp:= TStringList.Create;
  try
    slTemp.CommaText:= gHistoryLogNames;
    i:= slTemp.IndexOf(gLogName);
    if i<0 then slTemp.Insert(0, gLogName)
    else slTemp.Move(i, 0);
    gHistoryLogNames:= slTemp.CommaText;
  finally
    slTemp.Clear;
  end;
end;

procedure TfrmLogon.imgUpgradeClick(Sender: TObject);
var
  frm_upgrade_option: TfrmUpgradeOption;
begin
  // 长庆项目增加自动设置中心IP地址
  if gVersionFlag = 85 then
  begin
    frm_upgrade_option := TfrmUpgradeOption.Create(nil);
    try
      frm_upgrade_option.rgUpgradeOption.Items.Add('选择服务中心(&X)');

      if frm_upgrade_option.ShowModal = mrOk then
      begin
        case frm_upgrade_option.rgUpgradeOption.ItemIndex of
          0: checkUpgrade;
          1: checkUpgrade(True);
          2: checkBestDataHost;
        end;
      end;
    finally
      frm_upgrade_option.Free;
    end;
  end
  else
    checkUpgrade;
end;

procedure TfrmLogon.onGetBestHost(_sender: TObject; _host: string);
begin
  if _host <> '' then
  begin
    gDataHost := Trim(_host);
    BaseDBGlobal.AppGlobalByName('CQGPSDB')^.DBAPPHost := _host;

    WriteIni;
    baseDBUtilWriteINICommon;

    baseDBUtilShowMessageEx(
      '选择最快的服务中心',
      Format('恭喜您!最快的服务中心选择成功。'#13#10'地址为: %s,请重新启动系统。', [
        _host]),
      False
      );
  end;

end;

procedure TfrmLogon.checkBestDataHost;
begin
  if gIsUseDataHostList then
  begin
    baseNetTCPConnect := TBaseNetTCPConnectList.Create;
    baseNetTCPConnect.OnConnectTCPResult := onGetBestHost;
    baseNetTCPConnect.CheckTCPHostString(gDataHostList, gDataPort);
  end;
end;

procedure TfrmLogon.checkUpgrade(_is_upgrade_map: Boolean);
var
  upgrade_url: string;
begin
  if Trim(gUpgradeURL) = '' then
    upgrade_url := 'http://124.240.126.22/GPSClient/GPSClient.inf'
  else
    upgrade_url := gUpgradeURL;

  if _is_upgrade_map then
  begin
    if Pos(UpperCase('.inf'), UpperCase(upgrade_url)) <> 0 then
      upgrade_url := AnsiReplaceStr(
        UpperCase(upgrade_url),
        UpperCase('.inf'),
        UpperCase('map.inf')
        );
  end;

  uBaseDBAutoUpgrade.CheckUpgrade(
    upgrade_url,
    Copy(GetVersionFromFile(Application.ExeName), 16, 3)
    );
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -