📄 ufrmmain.pas
字号:
try
GpsClient.Disconnect;
gLnkTcpState:= ltsOff;
if Active then
try
with GpsClient do begin
Host:= gMtscHost;
Port:= gMtscPort;
Connect;
LogName:= gLogName;
LogPwd:= IntToStr(gCurUsrId);
if not Assigned(gCurUsrInfo) then Exit;
GpsClient.UsrType:= gCurUsrInfo.UsrPurview;
LogOn;
end;
except
on E: Exception do
//AddLog(Format('联结GPS服务器%s:%d出错:%s', [GpsClient.Host, GpsClient.Port, E.Message]));
AddLog(Format(rsLinkGpsSvr+ '%s:%d'+ rsFail+ rsErrorCode+ '%s', [GpsClient.Host, GpsClient.Port, E.Message]));
end;
except
on e: Exception do
begin
MessageBox(Handle,PChar(E.Message),PChar('LinkTcpSvr'),MB_OK+MB_ICONERROR);
end;
end;
end;
procedure TfrmMain.FormCreate(Sender: TObject);
var
//////////////////////////////////////////////////////////////////
//by wulianghong 2004-10-28
ComputerName: array[0..MAX_COMPUTERNAME_LENGTH+1] of Char;
Size: Cardinal;
//////////////////////////////////////////////////////////////////
begin
TGPSClientVTVUtils.InitialVirtualTreeView(vtActiveVehicle);
TGPSClientVTVUtils.InitialVirtualTreeView(vtCarinfoTree);
TGPSClientVTVUtils.InitialVirtualTreeView(vtReplayCars);
// AddTestGPSData ;
IsTree := False;
frmMain := Self;
logDebug := TTbLogFile.Create(nil);
logDebug.Open(ExtractFilePath(Application.ExeName) + 'ClientDebug.log', otNew);
logSendCommand := TTbLogFile.Create(nil);
logSendCommand.Open(ExtractFilePath(Application.ExeName) + 'ClientCommand.log', otNew);
MapCgmDlg := TOpenCgmDialog.Create( self );
dsHost.Align := alClient;
///////////////////////////////////////
//0点漂移支持
///////////////////////////////////////
gSendHistoryCmd := False;
FListViewNeedSel:= nil;
FVTNeedSelect := nil;
Application.OnIdle:= IdleHandler;
FMapWinList:= TList.Create;
FCurCarId2TargetId:= THashedStringList.Create;
FReplayCarId2TargetId:= THashedStringList.Create;
ReadIni;
if not gIsShowStopSect then
dxBarButton27.Visible := ivNever;
DataModule1.scPetroQF.Host := gZPDataHost;
DataModule1.scPetroQF.Port := gZPDataPort;
DataModule1.scPetroZP.Host := gZPDataHost;
DataModule1.scPetroZP.Port := gZPDataPort;
InitMapWin;
SetLookFeel(gLookFeel);
Caption:= gTitle;
if gAppVersionName <> '' then
Caption := Caption + '(' + gAppVersionName + ')';
InitSearchWin;
SetActiveListviewShow;
dpReplay.Close;
FCloseing:= False;
///////////////////////////////////
//sInfoStr := GetInfoStr();
////////////////////////////////////
if not gTaxiOpened then dxBarSITaxi.Visible:= ivNever;
//////////////////////////////////////////////////////////////////////
//by wulianghong 2004-10-28
Size := MAX_COMPUTERNAME_LENGTH+1;
if GetComputerName(ComputerName, Size) then
gPCName :=ComputerName
else
gPCName :='NoName';
gGetStation := False;
///////////////////////////////////////////////////////////////////////
//by wulianghong 2005-1-26,for history
gHistoryGpsInfoList := TList.Create();
///////////////////////////////////////////////////////////////////////
//for police
{$IFDEF _POLICE}
dxBarManager1.Bars[2].Visible := False;
dxBarManager1.Bars[1].Visible := True;
dxBarManager1.AllowReset := False;
{$ELSE}
dxBarManager1.Bars[2].Visible := True;
dxBarManager1.Bars[1].Visible := False;
dxBarManager1.AllowReset := True;
{$ENDIF}
OilAppHandle := InitialAppComm;
InitialAppCommRecv(Self.Handle);
// frmSTGoods := nil;
// frmPetroDBMain := nil;
frmPetroZPMain := nil;
frmPetroQFMain := nil;
frmGPSANAMain := nil;
frmGPSOILMain := nil;
MonitorClient := TPetroBusinessMonitorClient.Create(Self);
MonitorClient.OnBusinessInfoArrived := doOnBusinessInfoArrived;
ConnChecker := TDaemonWorker.Create;
vtActiveVehicle.NodeDataSize := SizeOf(TGPSClientVTVActiveVehicleNodeData);
vtActiveVehicle.Header.PopupMenu := TVTHeaderPopupMenu.Create(self);
vtReplayCars.NodeDataSize := SizeOf(TGPSClientVTVActiveVehicleNodeData);
vtReplayCars.Header.PopupMenu := TVTHeaderPopupMenu.Create(self);
vtMemo.NodeDataSize := SizeOf(TMemoData);
rsLinkDB := GPSClientLanguageUtils.GetTranslatedText('联接数据库');
rsLogDB := GPSClientLanguageUtils.GetTranslatedText('登录数据库');
rsLinkGpsSvr := GPSClientLanguageUtils.GetTranslatedText('联结GPS服务器');
rsSucceed := GPSClientLanguageUtils.GetTranslatedText('成功!');
rsFail := GPSClientLanguageUtils.GetTranslatedText('失败!');
rsErrorCode := GPSClientLanguageUtils.GetTranslatedText('错误代码:');
rsExitAsk := GPSClientLanguageUtils.GetTranslatedText('你确信要退出GPS监控系统吗?');
rsExitAskCaption := GPSClientLanguageUtils.GetTranslatedText('退出提示');
rsAskCaption := GPSClientLanguageUtils.GetTranslatedText('提示');
rsDisconnect := GPSClientLanguageUtils.GetTranslatedText('断开');
rsConnect := GPSClientLanguageUtils.GetTranslatedText('联接');
rsLogon := GPSClientLanguageUtils.GetTranslatedText('登录');
rsUserAdmin := GPSClientLanguageUtils.GetTranslatedText('管理用户');
rsUserWatch := GPSClientLanguageUtils.GetTranslatedText('监控用户');
rsUserNormal := GPSClientLanguageUtils.GetTranslatedText('普通用户');
rsGpsStateNormal := GPSClientLanguageUtils.GetTranslatedText('正常');
rsGpsStateAlert := GPSClientLanguageUtils.GetTranslatedText('报警');
rsGpsValid := GPSClientLanguageUtils.GetTranslatedText('准确');
rsGpsInvalid := GPSClientLanguageUtils.GetTranslatedText('盲区');
rsCarLicense := GPSClientLanguageUtils.GetTranslatedText('车牌');
rsCarName := GPSClientLanguageUtils.GetTranslatedText('车名');
rsCarSpeed := GPSClientLanguageUtils.GetTranslatedText('速度');
rsCarHeading := GPSClientLanguageUtils.GetTranslatedText('方向');
rsCarGpsPercision := GPSClientLanguageUtils.GetTranslatedText('精度');
rsLongitude := GPSClientLanguageUtils.GetTranslatedText('经度');
rsLatitude := GPSClientLanguageUtils.GetTranslatedText('纬度');
// 地理信息
customLayerList := TStringList.Create;
initialFieldDefineMethodList := TStringList.Create;
frmGISClientMain := TfrmGISClientMain.Create(frmMain);
linkSystemNavForm(frmGISClientMain);
end;
procedure TfrmMain.FormDestroy(Sender: TObject);
begin
try
clearCustomLayers(ActiveMapView);
customLayerList.Free;
FreeAndNil(initialFieldDefineMethodList);
Timer1.Enabled := False;
tmCheckLink.Enabled := False;
logDebug.Close;
logSendCommand.Close;
ConnChecker.Terminate;
ConnChecker.Free;
WriteIni;
// FreeAndNil(frmSTGoods);
// FreeAndNil(frmPetroDBMain);
FreeAndNil(frmPetroZPMain);
FreeAndNil(frmPetroQFMain);
FreeAndNil(frmGPSANAMain);
FreeAndNil(frmGPSOILMain);
FCurCarId2TargetId.Free;
FReplayCarId2TargetId.Free;
FMapWinList.Free;
// 定制cgm 图标的对话框 add by mous 2005-01-27
MapCgmDlg.Free;
FreeAndNil(MonitorClient);
except
on e: Exception do
begin
MessageBox(Handle,PChar(E.Message),PChar('FormDestroy'),MB_OK+MB_ICONERROR);
end;
end;
end;
procedure TfrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
// CanClose:= Application.MessageBox('你确信要退出GPS监控系统吗?',
// '退出提示', MB_YESNO+ MB_ICONQUESTION)=IDYES;
CanClose:= Application.MessageBox(PChar(rsExitAsk), PChar(rsExitAskCaption),
MB_YESNO+ MB_ICONQUESTION)=IDYES;
end;
procedure TfrmMain.actFileCloseExecute(Sender: TObject);
begin
try
Close;
except
on e: Exception do
begin
MessageBox(Handle,PChar(E.Message),PChar('actFileCloseExecute'),MB_OK+MB_ICONERROR);
end;
end;
end;
procedure TfrmMain.actFileNetSettExecute(Sender: TObject);
resourcestring
rsRestart = '网络配置需要,注销或者重新运行后生效。';
begin
try
if ShowOption
then Application.MessageBox(PChar(rsRestart), PChar(rsAskCaption),
MB_OK+ MB_ICONINFORMATION);
except
on e: Exception do
begin
MessageBox(Handle,PChar(E.Message),PChar('actFileNetSettExecute'),MB_OK+MB_ICONERROR);
end;
end;
end;
procedure TfrmMain.actFileAddWinExecute(Sender: TObject);
begin
try
AddMapWin(mftNormal);
except
on e: Exception do
begin
MessageBox(Handle,PChar(E.Message),PChar('actFileAddWinExecute'),MB_OK+MB_ICONERROR);
end;
end;
end;
function TfrmMain.AddMapWin(MapFrameType: TMapFrameType): TdxDockPanel;
var
dpMap: TdxDockPanel;
BakCur: TCursor;
CarInfo: TCarInfo;
Target: TGIS_Target;
sTargetId: string;
iTargetId: Integer;
i: Integer;
begin
Result := nil;
try
BakCur:= Screen.Cursor;
Screen.Cursor:= crHourGlass;
try
dpMap:= TdxDockPanel.Create(Self);
dpMap.Close;
dpMap.AllowFloating:= False;
Result:= dpMap;
HookMapPanel(dpMap);
if Assigned(ActiveMapFrame) then begin
//dpMap.DockTo((ActiveMapFrame.Parent as TdxDockPanel), TdxDockingType(gNewWinDockType), 0);
dpMap.DockTo((ActiveMapFrame.Parent as TdxDockPanel), dtClient, 0);
end;
CreateMapFrame(dpMap, MapFrameType);
FMapWinList.Add(dpMap);
ActiveMapFrame:= TGPSClientTargetMapWin.GetMapForm4Panel(dpMap);
dpMap.Show;
if (dpMap.ParentDockControl is TdxTabContainerDockSite)
then (dpMap.ParentDockControl as TdxTabContainerDockSite).ActiveChild:= dpMap;
//实时窗口 => 订阅所有车辆、修改轨迹、
if MapFrameType=mftNormal then begin
if Assigned( gCarInfoList ) then
for i:= 0 to gCarInfoList.Count-1 do begin
CarInfo:= TCarInfo(gCarInfoList.Objects[i]);
sTargetId := FCurCarId2TargetId.Values[CarInfo.VehicleCommIDStringShort]; // ruihanxl
// sTargetId:= FCurCarId2TargetId.Values[IntToStr(CarInfo.CarID)];
iTargetId:= StrToIntDef(sTargetId, -1);
Target:= TargetCommander1.TargetByID(iTargetId);
if not Assigned(Target) then Continue;
//FCurCarId2TargetId.Values[IntToStr(CarInfo.CarID)]:= IntToStr(Target.TargetID);
ActiveMapFrame.Viewer.SubscribeTarget(Target);
ActiveMapFrame.SetTrackType(Target.TargetID, gShowTrackType);
end;
end;
finally
Screen.Cursor:= BakCur;
end;
except
on e: Exception do
begin
MessageBox(Handle,PChar(E.Message),PChar('AddMapWin'),MB_OK+MB_ICONERROR);
end;
end;
end;
procedure TfrmMain.CreateMapFrame(AOwner: TdxDockPanel; MapFrameType: TMapFrameType);
var
MapForm: TFramMap;
begin
try
MapForm:= TFramMap.Create(AOwner, MapFrameType);
//MapForm.Viewer.FDeviceDDraw := nil;
MapForm.Parent:= AOwner;
MapForm.Align:= alClient;
MapForm.MapLoad;
AOwner.Caption := MapForm.Viewer.CurrentMap.Name;
//AOwner.ImageIndex := AImageIndex;
MapForm.Visible := True;
except
on e: Exception do
begin
MessageBox(Handle,PChar(E.Message),PChar('CreateMapFrame'),MB_OK+MB_ICONERROR);
end;
end;
end;
procedure TfrmMain.InitMapWin;
begin
try
HookMapPanel(dpStartPage);
CreateMapFrame(dpStartPage, mftNormal);
FMapWinList.Add(dpStartPage);
ActiveMapFrame:= TGPSClientTargetMapWin.GetMapForm4Panel(dpStartPage);
GetMapList;
except
on e: Exception do
begin
MessageBox(Handle,PChar(E.Message),PChar('InitMapWin'),MB_OK+MB_ICONERROR);
end;
end;
end;
procedure TfrmMain.MapCloseQuery(Sender: TdxCustomDockControl;
var CanClose: Boolean);
resourcestring
rsCloseMapAsk = '您确信要关闭此地图窗口吗?';
rsNeedOneMapWin = '系统至少需要一个地图窗口,不能关闭!';
var
MapFrame: TFramMap;
begin
try
if FMapWinList.Count>1 then begin
MapFrame:= TGPSClientTargetMapWin.GetMapForm4Panel(Sender as TdxDockPanel);
if Assigned(MapFrame) and MapFrame.DirectClose
then CanClose:= True
else CanClose:= Application.MessageBox(PChar(rsCloseMapAsk),
PChar(rsAskCaption), MB_YESNO+ MB_ICONQUESTION)= idYes;
// else CanClose:= Application.MessageBox('您确信要关闭此地图窗口吗?',
// '提示', MB_YESNO+ MB_ICONQUESTION)= idYes;
end else begin
CanClose:= False;
Application.MessageBox(PChar(rsNeedOneMapWin), PChar(rsAskCaption), MB_OK+ MB_ICONHAND);
end;
except
on e: Exception do
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -