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

📄 ufrmmain.pas

📁 a voice guide client ,it is the second part of voice guide center
💻 PAS
📖 第 1 页 / 共 5 页
字号:
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 + -