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

📄 ufrmmain.pas

📁 a voice guide client ,it is the second part of voice guide center
💻 PAS
字号:
//==============================================================================
// $修订版本号: 1.0 $
// $日期      : 2006年7月20日 星期日 11:38:52 $
// $版本号    : 1.0.0 Alpha 1 $
//
// 中山东区公安地理指挥系统的功能实现。
//
//
// $BeginLog$
// $Endlog  $
// $Copyright 版权所有 (c)2005 TRANSIT  保留所有权利$
//==============================================================================
{:
  中山东区公安地理指挥系统的功能实现。
}

unit ufrmMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxGraphics, dxStatusBar, ExtCtrls, dxNavBar, cxControls,
  cxContainer, cxEdit, cxLabel, dxDockPanel, dxDockControl, uBaseSystemNavForm,
  ImgList, uBaseDBLog4SQL, IniFiles,
  auHTTP, uBaseDBForm,
  auAutoUpgrader, Menus, IdBaseComponent, IdAntiFreezeBase, IdAntiFreeze,
  jpeg, DBClient, ufrmBaseDB_User,
  ufrmBaseDBDataExport, ufrmBaseDBDataImport, ufrmBaseDBDataReport,
  uBaseDBDataModule, uBaseDBUtils, ufrmBaseDBSimpleView,
  ufrmBaseDBSQLLog, ufrmBaseGISMapView, ufrmBaseGISLayer, ufrmBaseDBLogon,
  uITaxiServiceODMPClientLogistic, uBaseODMDefs,
  uBaseODMProtocalUtils,
  ufrmTaxiCall_CT_Driver,
  ufrmTaxiCall_CT_Vehicle,
  ufrmCaller,
  ufrmBaseDBUser,
  ufrmTaxiCall_CT_Customer,
  ufrmTAXICALL_CT_AutoPoints,
  ufrmTaxiCall_CT_TaskResponse,
  ufrmTaxiCall_CT_Task, dxNavBarBase, dxNavBarCollns,
  uTaxiCallUtils;

const
  APP_CAPTION = '电召客户端';

type
  TfrmMain = class(TBaseSystemNavForm)
    dxDockSiteMain: TdxDockSite;
    dxLayoutDockSite1: TdxLayoutDockSite;
    dxLayoutDockSite3: TdxLayoutDockSite;
    dxDockPanelWelcome: TdxDockPanel;
    Image1: TImage;
    lblSystemName: TcxLabel;
    lblSystemName1: TcxLabel;
    dxDockPnlNavi: TdxDockPanel;
    dxNavBar: TdxNavBar;
    dxStatusBar: TdxStatusBar;
    dxDockingManager1: TdxDockingManager;
    ilMain: TImageList;
    AutoUpgraderPro: TauAutoUpgrader;
    MainMenu1: TMainMenu;
    IdAntiFreeze1: TIdAntiFreeze;
    tmCaller: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure tmCallerTimer(Sender: TObject);

  // 座席客户端
  private
    password : string;

	  procedure doOnHint(_status_str: string);
    procedure doOnConnectResult(_sender: TObject; _is_connect: Boolean);

  end;

var
  frmMain: TfrmMain;

implementation
      uses ufrmTAXICALL_Utils;

{$R *.dfm}

//------------------------------------------------------------------------------
//  窗口事件
//------------------------------------------------------------------------------

procedure TfrmMain.FormCreate(Sender: TObject);
var
  p_app_global    : PBaseDBAppGlobal;
  client_dataset  : TClientDataSet;
  logon_str       : string;
  GroupID         : Integer;
begin
  iniFile := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'));
  readIni;

  // 设置应用程序名称
  AppName := 'ETTaxiCall';
  baseDBUtilReadINI(AppName);

  // 设置日志模式
  BaseDBLog4SQLGlobal.UseLog4SQLOption := basedblog4sqluselogoptionAlways;

  // 设置应用程序标题
  Application.Title := APP_CAPTION +
    baseDBUtilGetVersionFromFile(Application.ExeName);

  NavBar := dxNavBar;

  case gBaseDBOfficeStyle of
    0:
    begin
      NavBar.View := 13;
    end;
    1:
    begin
      NavBar.View := 4;
    end;
  end;

  // 填写导航窗口属性
  DockPanelWelcome := dxDockPanelWelcome;
  StatusBar := dxStatusBar;
  WelcomeLabel := lblSystemName;
  WelcomeLabel1 := lblSystemName1;

  SystemCaption := APP_CAPTION;

  Caption := Caption + ' ' + baseDBUtilGetVersionFromFile(Application.ExeName);

  // 增加导航项目组
  addNavGroup('电召业务管理', 107); //7
  addNavGroup('数据统计报表', 79);
  addNavGroup('数据导入导出', 102);
  addNavGroup('系统权限管理', 30);
  addNavGroup('地理信息管理', 19);
  addNavGroup('基础数据配置', 30);  //6

  // 增加导航项目
  // 数据报表

  AddNavFunction('任务管理', 11 , 0, TfrmTaxiCall_CT_Task);
  AddNavFunction('电召应答', 12 , 0, TfrmTaxiCall_CT_TaskResponse);
  AddNavFunction('客人管理', 10 , 0, TfrmTaxiCall_CT_Customer);

  AddNavFunction('统一制表', 13 , 1, TfrmBaseDBDataReport);

  AddNavFunction('数据导入', 102, 2, TfrmBaseDBDataImport);
  AddNavFunction('数据导出', 103, 2, TfrmBaseDBDataExport);

  AddNavFunction('用户类型', 107 , 3, TfrmBaseDBSimpleView,
    TfrmBaseDBSimpleView.GetParamPointer('BaseDB_UserGroup', '用户类型'));
  AddNavFunction('用户组管理', 36, 3, TfrmBaseDBUser);

  AddNavFunction('操作日志', 28 , 3, TfrmBaseDBSQLLog);

  AddNavFunction('电子地图', 5 , 4, TfrmBaseGISMapView,
    TfrmBaseGISMapView.GetParamPointer
    );
  AddNavFunction('图层管理', 108 , 4, TfrmBaseGISLayer);
  AddNavFunction('客人年龄段', 107 , 5, TfrmBaseDBSimpleView,
    TfrmBaseDBSimpleView.GetParamPointer('CT_AgeSegment', '客人年龄段'));
  AddNavFunction('司机管理', 103, 5, TfrmTaxiCall_CT_Driver);
  AddNavFunction('车辆管理', 103, 5, TfrmTaxiCall_CT_Vehicle);
  AddNavFunction('座席管理', 103, 5, TfrmBaseDB_User);
  AddNavFunction('自定义站点', 103, 5, TfrmTAXICALL_CT_AutoPoints);

  // 进行用户身份认证
  // 进行用户身份认证
  if TfrmBaseDBLogon.Logon(
    Self,
    APP_CAPTION,
    gUpgradeUrl,
    Copy(baseDBUtilGetVersionFromFile(Application.ExeName), 16, 3)
    ) then
  begin
    p_app_global := BaseDBGlobal.AppGlobalByName(AppName);
    g_app_global := BaseDBGlobal.AppGlobalByName(AppName);

    logon_str := Format('  [%s:%s]', [
      p_app_global^.UserGroupName,
      p_app_global^.UserName
      ]);
     client_dataset :=  TClientDataSet.Create(nil);
     TBaseDBForm.QueryFromSQL(AppName, Format('Select * from BaseDB_User where ID = %d', [p_app_global^.UserID]),
//        client_dataset);
//    client_dataset := TBaseDBForm.OpenSelectFromDataset(AppName,
//      Format('Select * from BaseDB_User where ID = %d', [p_app_global^.UserID]));
    if Assigned(client_dataset) then
    begin
      password     := client_dataset.fieldByName('Password').AsString;
      GroupID      := client_dataset.fieldByName('GroupID').AsInteger;
      BaseDBLog4SQLGlobal.UserGroupID := GroupID;
    end;
    dxStatusBar.Panels[0].Text := dxStatusBar.Panels[0].Text + logon_str;

    // 创建ODMP座席窗口
    frmCaller := TfrmCaller.Create(nil);
    frmCaller.OnHint := doOnHint;
    frmCaller.OnConnectResult := doOnConnectResult;

    frmCaller.InitialODMP(gODMPServerIP, gODMPServerPort);
    frmCaller.ConnectODMP;
    dxStatusBar.Panels.Items[0].Text := '正在连接电召服务';
    tmCaller.Enabled := True;
    frmCaller.userSeatName := p_app_global^.UserName;

    frmCaller.iniBaseGisMapCall;
    DoItem(4, 0);
//    frmCaller.iniBaseGisMapCall;
    dxDockPnlNavi.AutoHide := True;


    // 根据用户类型设置功能界面
    InitialViewByUserType(client_dataset, GroupID, AppName, NavBar, AppName);
  end;
end;

procedure TfrmMain.FormDestroy(Sender: TObject);
begin
  writeIni;
  iniFile.Free;
end;

//------------------------------------------------------------------------------
//  私有方法 -- ODMP触发事件
//------------------------------------------------------------------------------

{: ODMP服务端回复的指令触发事件。
  @param _status_id      回复指令的状态信息
}
procedure TfrmMain.doOnHint(_status_str: string);
begin
  dxStatusBar.Panels.Items[0].Text := frmCaller.userSeatName + _status_str;
end;

procedure TfrmMain.doOnConnectResult(_sender: TObject; _is_connect: Boolean);
begin
  if _is_connect then
  begin
    dxStatusBar.Panels.Items[0].Text := '正在登录电召服务';
    frmCaller.clientLogistic.AuthODMP('BCM_Seat_Logon', frmCaller.userSeatName, Trim(password), False, False, True);
    tmCaller.Enabled := False; 
  end
  else begin
    dxStatusBar.Panels.Items[0].Text := '电召服务断线';
    tmCaller.Enabled := True;
  end;
end;

procedure TfrmMain.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Shift = [ssCtrl] then
    if Key = 83 then
      frmCaller.DisplayPnlCaller;
end;

procedure TfrmMain.tmCallerTimer(Sender: TObject);
begin
  dxStatusBar.Panels.Items[0].Text := '正在重新连接电召服务';
  frmCaller.ConnectODMP;
end;

end.

⌨️ 快捷键说明

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