📄 ufrmlogon.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 + -