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