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

📄 srvmain.pas

📁 计量功能 事件记录 购电提醒 欠费报警 负荷控制 自检功能 显示功能 用户插卡错误信息显示
💻 PAS
字号:
unit SrvMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, StdCtrls, ExtCtrls, DBTables, ComCtrls, SrvRmt, NetImsServer_tlb,
  ConstDef;

type
  TFrmSrvMain = class(TForm)
    GrpBoxOpStatus: TGroupBox;
    LabName: TLabel;
    LabMark: TLabel;
    LabClass: TLabel;
    LabCompy: TLabel;
    LabAccount: TLabel;
    GrpBoxSys: TGroupBox;
    BtnCloseSys: TButton;
    GrpBoxRapidBtn: TGroupBox;
    LabMsg: TLabel;
    MainMenu: TMainMenu;
    ItmNImsRegIni: TMenuItem;
    TimActive: TTimer;
    ItmSysTest: TMenuItem;
    MeuSysInfo: TMenuItem;
    ItmSoftInfo: TMenuItem;
    ItmCompyIntro: TMenuItem;
    Session1: TSession;
    N2: TMenuItem;
    MeuSys: TMenuItem;
    MeuSuper: TMenuItem;
    MeuWatch: TMenuItem;
    StatusBar1: TStatusBar;
    MeuSQ: TMenuItem;
    ItmSysWatch: TMenuItem;
    N1: TMenuItem;
    BtnOpLog: TButton;
    ItmEditClnt: TMenuItem;
    ItmChgSysWPsw: TMenuItem;
    ItmChgSuperPsw: TMenuItem;
    ItmChgSysMPsw: TMenuItem;
    N4: TMenuItem;
    ItmEditAccount: TMenuItem;
    ItmQSAllCust: TMenuItem;
    N5: TMenuItem;
    ItmEditPrice: TMenuItem;
    ItmEditCust: TMenuItem;
    ImgActive: TImage;
    N3: TMenuItem;
    ItmQSDefCust: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure TimActiveTimer(Sender: TObject);
    procedure BtnCloseSysClick(Sender: TObject);
    procedure BtnOpLogClick(Sender: TObject);
    procedure PrdFrmSrvMainIni(Sender: TObject);
    procedure PrdSrvMainMenuIni(Sender: TObject; bCanUse: Boolean);
    procedure PrdOpLogOff(Sender: TObject);
    procedure PrdSrvCntResultCheck(Sender: TObject);
    function  bFunCloseAllAccount(Sender: TObject): Boolean;
    procedure ItmSysTestClick(Sender: TObject);
    procedure ImgActiveClick(Sender: TObject);
    procedure ItmSoftInfoClick(Sender: TObject);
    procedure ItmCompyIntroClick(Sender: TObject);
    procedure ItmNImsRegIniClick(Sender: TObject);
    procedure ItmChgPswClick(Sender: TObject);
    procedure ItmSysWatchClick(Sender: TObject);
    procedure ImgChgPswClick(Sender: TObject);
    procedure ItmEditClntClick(Sender: TObject);
    procedure ItmEditAccountClick(Sender: TObject);
    procedure ItmEditPriceClick(Sender: TObject);
    procedure ItmEditCustClick(Sender: TObject);
    procedure ItmQSAllClick(Sender: TObject);
    procedure ItmQSDefCustClick(Sender: TObject);
  private
    { Private declarations }
    iActive: integer;
    BmpAct: Array[1..MaxSrvSwayBmpNum] of TBitmap;
  public
    { Public declarations }
  end;

var
  FrmSrvMain: TFrmSrvMain;
  NImsSrv: TNImsSrv;

  RecNImsInfo: RecNImsInfoType;
  RecOpInfo: RecOpInfoType;//系统操作员信息
  btRetValue: Byte; //Connect Return Value
  bOpInUse: Boolean=False; //系统操作员是否已登记

Function bFunNImsInied: Boolean;
   export;far;external 'NIMSsys.dll';

implementation

uses  AboutSoft, AboutCompy, SrvTest, SrvLog,
      IniReg, SysWatch, EditClnt, EditLog,
      EditPrice, EditCust, QueryStat;

{$R *.DFM}

procedure TFrmSrvMain.FormCreate(Sender: TObject);
var
  iCount: integer;
  sParentDir,sSrvDBDir,sBmpDir: string;
begin
  BorderIcons:=[biSystemMenu,biMinimize];

  bOpInUse:=False;  iActive:=0;
  NImsSrv:=TNImsSrv.Create(Self);

  sParentDir:=ExtractFileDir(GetCurrentDir);
  sSrvDBDir:=sParentDir+DefSrvDirKey+'\Data';
  try
    if Session.IsAlias(DefSrvAlias) then
       Session.DeleteAlias(DefSrvAlias);
  finally
    if not Session.IsAlias(DefSrvAlias) then
       Session.AddStandardAlias(DefSrvAlias,sSrvDBDir,'PARADOX');
   end;
  sBmpDir:=sParentDir+DefSrvDirKey+'\Pic';
  for iCount:=1 to MaxSrvSwayBmpNum do begin
    BmpAct[iCount]:=TBitmap.Create;
    BmpAct[iCount].LoadFromFile(sBmpDir+'\COMMS'+inttostr(iCount)+'.bmp');
   end;
end;

procedure TFrmSrvMain.FormClose(Sender: TObject; var Action: TCloseAction);
var
  iCount: integer;
begin
  bFunCloseAllAccount(Sender);
  NImsSrv.Free;

  for iCount:=1 to MaxSrvSwayBmpNum do
     BmpAct[iCount].Free;
  if Session.IsAlias(DefSrvAlias) then
     Session.DeleteAlias(DefSrvAlias);
end;

procedure TFrmSrvMain.FormShow(Sender: TObject);
begin
  bOpInUse:=False;
  PrdFrmSrvMainIni(Sender); //初始化窗体

  with RecNImsInfo do begin
     if not bFunNImsInied then begin
        ItmNImsRegIniClick(Sender);
        SrvHost.sHostName:='SrvHost';
        ClntHost.sHostName:='ClntHost';
       end
     else PrdGetNImsInfo(RecNImsInfo);//取得Client软件信息
     if SrvHost.sHostName<>ClntHost.sHostName
       then Close;
   end;
end;

procedure TFrmSrvMain.PrdFrmSrvMainIni(Sender: TObject);
var
  sClassStr: String;
begin
  if bOpInUse=True then begin
    {$ifndef Def_Test}
      TimActive.Enabled:=True;
      TimActive.Interval:=500; //动画放慢
    {$endif}
   {更新系统操作界面开始}
    BtnOpLog.Caption:='退出服务器<<';
    PrdSrvMainMenuIni(Sender,bOpInUse);
   {更新系统操作界面结束}
   end
   else begin
    {$ifndef Def_Test}
      TimActive.Enabled:=True;
      TimActive.Interval:=250; //动画正常
    {$endif}
    {初始化系统操作界面开始}
       btRetValue:=Byte(CntNone);
       with RecOpInfo do begin
         sAccount:='';  sOpPsw:='';
         sOpName:='';   cOpClass:=DefSysNullChar;
         sOpMark:='...';
        end;
       BtnOpLog.Caption:='登录服务器>>';
       PrdSrvMainMenuIni(Sender,bOpInUse);
    {初始化系统操作界面结束}
   end;
   LabCompy.Caption:=RecNImsInfo.sCompy;{初始化系统操作状态}
   LabAccount.Caption:='登录帐号: '+RecOpInfo.sAccount;
   LabName.Caption:=   '姓    名: '+RecOpInfo.sOpName;
   LabMark.Caption:=   '  ['+RecOpInfo.sOpMark+']';
   if RecOpInfo.cOpClass=DefSysMChar then sClassStr:=DefSysMClass
   else if RecOpInfo.cOpClass=DefSVChar then sClassStr:=DefSVClass
   else if RecOpInfo.cOpClass=DefSysWChar then sClassStr:=DefSysWClass
   else sClassStr:=DefSysNullClass;
   LabClass.Caption:=  '操作级别: '+sClassStr;
end;

procedure TFrmSrvMain.PrdSrvMainMenuIni(Sender: TObject; bCanUse: Boolean);
var
  iCount,iItemNum: integer;
begin
  iItemNum:=MainMenu.Items.Count;
  if bCanUse=True then begin
     if RecOpInfo.cOpClass=DefSysWChar then begin
        MeuWatch.Enabled:=True; MeuWatch.Visible:=True;
      end
     else if RecOpInfo.cOpClass=DefSVChar then begin
        MeuSuper.Enabled:=True; MeuSuper.Visible:=True;
      end
     else if RecOpInfo.cOpClass=DefSysMChar then begin
        for iCount:=0 to iItemNum-4 do begin
          MainMenu.Items[iCount].Enabled:=True;
          MainMenu.Items[iCount].Visible:=True;
         end; //end for
      end;
    end
  else begin
    LabMsg.Visible:=True;
    LabMsg.Caption:=
         '    "预付费管理系统"由西清智能表业有限公司开发,'+#13
        +'适用于西清智能表业有限公司生产的预付费电度表。'+#13
        +'    本系统可以根据用户实际使用情况为用户添加或'+#13
        +'删除软件中的某些功能。'+#13
        +'    用户在使用本系统过程中若有改进意见,请您与'+#13
        +'西清智能表业有限公司联系。我们将根据您的意见改'+#13
        +'进本系统,增强系统的安全性和可靠性,使用户使用'+#13
        +'本系统更加快捷、方便!'+#13#13
        +'            西清智能表业有限公司NIms软件开发组';
    // 快捷方式
    for iCount:=0 to iItemNum-2 do begin
      MainMenu.Items[iCount].Enabled:=False;
      MainMenu.Items[iCount].Visible:=False;
     end; //end for
   end;//end if
end;

procedure TFrmSrvMain.ImgActiveClick(Sender: TObject);
begin
  ItmSoftInfoClick(Sender);
end;

procedure TFrmSrvMain.ItmSoftInfoClick(Sender: TObject);
var
  FrmSoftInfo: TFrmSoftInfo;
begin
  FrmSoftInfo:=TFrmSoftInfo.Create(Self);
  FrmSoftInfo.ShowModal;
  FrmSoftInfo.Free;
end;

procedure TFrmSrvMain.ItmCompyIntroClick(Sender: TObject);
var
  FrmAboutCompy: TFrmAboutCompy;
begin
  FrmAboutCompy:=TFrmAboutCompy.Create(Self);
  FrmAboutCompy.ShowModal;
  FrmAboutCompy.Free;
end;

procedure TFrmSrvMain.BtnCloseSysClick(Sender: TObject);
begin
  if wFunShowASK('确定要关闭系统吗?',[mbOK]+[mbCancel])=mrOk
    then close;
end;

procedure TFrmSrvMain.BtnOpLogClick(Sender: TObject);
var
  iRet: integer;
  FrmSrvLog: TFrmSrvLog;
begin
  if bOpInUse=True then begin //系统操作员正在使用
    bOpInUse:=False;
    PrdOpLogOff(Sender); //系统操作员退出
    PrdFrmSrvMainIni(Sender); Exit;
   end
  else begin  //登录
    FrmSrvLog:=TFrmSrvLog.Create(Self);
    FrmSrvLog.EnterMode:=OpLogInMode;
    FrmSrvLog.Caption:='登录服务器';
    iRet:=FrmSrvLog.ShowModal;
    FrmSrvLog.Free;
    if iRet=mrOk then bOpInUse:=True;
    PrdFrmSrvMainIni(Sender);
   end;
end;

procedure TFrmSrvMain.TimActiveTimer(Sender: TObject);
var
  iSwayBmp: integer;
begin
   iActive:=iActive+1;
   if (iActive>=1) and (iActive<=MaxSrvSwayBmpNum)
     then iSwayBmp:=iActive
   else if iActive<=2*(MaxSrvSwayBmpNum-1)
     then iSwayBmp:=2*MaxSrvSwayBmpNum-iActive
   else begin
     iActive:=1; iSwayBmp:=iActive;
    end;
   ImgActive.Visible:=False;
   ImgActive.Picture.Bitmap:=BmpAct[iSwayBmp];
   ImgActive.Visible:=True;
end;

function  TFrmSrvMain.bFunCloseAllAccount(Sender: TObject): Boolean;
var
  btRet: Byte;
  ItfNImsSrv: INImsSrv;
begin
  ItfNImsSrv:=TNImsSrv.Create(Self);
  btRet:=ItfNImsSrv.btFunRmtAllLogOff;
  ItfNImsSrv:=nil;
  if btRet = Byte(CntLogOK) then Result:=True
  else Result:=False;
end;

procedure TFrmSrvMain.PrdOpLogOff(Sender: TObject);
var
  btClass: Byte;
  ItfNImsSrv: INImsSrv;
begin //系统操作员注销
  try
    btClass:=Byte(RecOpInfo.cOpClass);
    ItfNImsSrv:=TNImsSrv.Create(Self);
    btRetValue:=ItfNImsSrv.btFunRmtLogOff(RecOpInfo.sAccount,btClass);
    ItfNImsSrv:=nil;
  except
    btRetValue:=Byte(CntLogFail);
   end;
  bOpInUse:=False;
  if btRetValue=Byte(CntLogFail) then wFunShowError('注销NIms失败!',[mbOK])
  else if btRetValue=Byte(CntNotExist) then
     wFunShowError('注销帐号不存在!',[mbOK])
  else if btRetValue=Byte(CntLogged) then
     wFunShowError('操作员已退出!',[mbOK]);
  PrdSrvCntResultCheck(Sender);
end;

procedure TFrmSrvMain.PrdSrvCntResultCheck(Sender: TObject);
var
  bExit: Boolean;
begin
  if  (btRetValue=Byte(CntSuccess)) or (btRetValue=Byte(CntLogOK))
    then  bExit:=False
  else if btRetValue = Byte(InValidNetIms) then begin
    MessageDlg('西清智能表业有限公司'+#13+#13+'严正声明:'+#13+#13
      +'此软件为非授权软件...'+#13+'使用此软件将导致严重后果!'
      +#13+'由此带来的一切后果由使用者承担!'+'       ',
      mtWarning,[mbOK],0);
    bExit:=True;
   end
  else if btRetValue = Byte(UnRegNetIms) then begin
    MessageDlg('软件未进行初始化!',mtWarning,[mbOK],0);
    bExit:=True;
   end
  else if (btRetValue=Byte(CntFail)) or (btRetValue=Byte(CntLogFail))
    then bExit:=True
  else bExit:=True;
  if bExit=False then PrdFrmSrvMainIni(Sender)
  else Close;
end;

procedure TFrmSrvMain.ItmNImsRegIniClick(Sender: TObject);
var
  FrmIniReg: TFrmIniReg;
begin
  FrmIniReg:=TFrmIniReg.Create(Self);
  FrmIniReg.ShowModal;
  FrmIniReg.Free;
end;

procedure TFrmSrvMain.ItmSysTestClick(Sender: TObject);
var
  FrmSrvTest: TFrmSrvTest;
begin
  FrmSrvTest:=TFrmSrvTest.Create(Self);
  FrmSrvTest.ShowModal;
  FrmSrvTest.Free;
end;

procedure TFrmSrvMain.ItmChgPswClick(Sender: TObject);
var
  FrmSrvLog: TFrmSrvLog;
begin
  FrmSrvLog:=TFrmSrvLog.Create(Self);
  FrmSrvLog.EnterMode:=OpChgPswMode;
  FrmSrvLog.Caption:='更改登录口令';
  FrmSrvLog.ShowModal;
  FrmSrvLog.Free;
end;

procedure TFrmSrvMain.ItmSysWatchClick(Sender: TObject);
var
  FrmSysWatch: TFrmSysWatch;
begin
  FrmSysWatch:=TFrmSysWatch.Create(Self);
  FrmSysWatch.ShowModal;
  FrmSysWatch.Free;
end;

procedure TFrmSrvMain.ImgChgPswClick(Sender: TObject);
begin
  ItmChgPswClick(Sender);
end;

procedure TFrmSrvMain.ItmEditClntClick(Sender: TObject);
var
  FrmEditClnt: TFrmEditClnt;
begin
  FrmEditClnt:=TFrmEditClnt.Create(Self);
  FrmEditClnt.ShowModal;
  FrmEditClnt.Free;
end;

procedure TFrmSrvMain.ItmEditAccountClick(Sender: TObject);
var
  FrmEditLog: TFrmEditLog;
begin
  FrmEditLog:=TFrmEditLog.Create(Self);
  FrmEditLog.ShowModal;
  FrmEditLog.Free;
end;

procedure TFrmSrvMain.ItmEditPriceClick(Sender: TObject);
var
  FrmEditPrice: TFrmEditPrice;
begin
  FrmEditPrice:=TFrmEditPrice.Create(Self);
  FrmEditPrice.ShowModal;
  FrmEditPrice.Free;
end;

procedure TFrmSrvMain.ItmEditCustClick(Sender: TObject);
var
  FrmEditCust: TFrmEditCust;
begin
  FrmEditCust:=TFrmEditCust.Create(Self);
  FrmEditCust.ShowModal;
  FrmEditCust.Free;
end;

procedure TFrmSrvMain.ItmQSDefCustClick(Sender: TObject);
var
  FrmQueryStat: TFrmQueryStat;
begin
  FrmQueryStat:=TFrmQueryStat.Create(Self);
  FrmQueryStat.EnterMode:=QSDefCustMode;
  FrmQueryStat.Caption:='统计查询指定用户记录';
  FrmQueryStat.ShowModal;
  FrmQueryStat.Free;
end;

procedure TFrmSrvMain.ItmQSAllClick(Sender: TObject);
var
  FrmQueryStat: TFrmQueryStat;
begin
  FrmQueryStat:=TFrmQueryStat.Create(Self);
  FrmQueryStat.EnterMode:=QSAllInfoMode;
  FrmQueryStat.Caption:='统计查询全部用户记录';
  FrmQueryStat.ShowModal;
  FrmQueryStat.Free;
end;

end.

⌨️ 快捷键说明

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