📄 clntmain.pas
字号:
unit ClntMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBClient, MConnect, ComCtrls, ToolWin, StdCtrls, Buttons, Menus,
Registry, DBTables, NetImsServer_TLB, ExtCtrls, FieldDef, ConstDef;
type
TFrmClntMain = class(TForm)
DCOMCntToSever: TDCOMConnection;
ClientDataSet: TClientDataSet;
MainMenu: TMainMenu;
MeuCustom: TMenuItem;
MeuICCard: TMenuItem;
MeuOp: TMenuItem;
MeuSysinfo: TMenuItem;
ItmSoftInfo: TMenuItem;
GrpBoxOpStatus: TGroupBox;
ItmNewCust: TMenuItem;
GrpBoxRapidBtn: TGroupBox;
ItmChangePsw: TMenuItem;
ItmAsk: TMenuItem;
LabName: TLabel;
LabMark: TLabel;
LabClass: TLabel;
LabCompy: TLabel;
LabAccount: TLabel;
ItmRefresh: TMenuItem;
Session: TSession;
ItmChkCardDev: TMenuItem;
N1: TMenuItem;
ItmCustBuy: TMenuItem;
ItmEdtCustInfo: TMenuItem;
N2: TMenuItem;
ItmReadCard: TMenuItem;
ItmPatch: TMenuItem;
ItmUnBuy: TMenuItem;
ItmCustClose: TMenuItem;
GrpBoxSys: TGroupBox;
BtnOpLog: TButton;
BtnCloseSys: TButton;
N3: TMenuItem;
ItmCreateChkCard: TMenuItem;
N4: TMenuItem;
ItmCustChk: TMenuItem;
ItmClearChkCard: TMenuItem;
N5: TMenuItem;
N7: TMenuItem;
ImgNewCust: TImage;
ImgChgPsw: TImage;
ImgReadCard: TImage;
ImgCustBuy: TImage;
LabMsg: TLabel;
ItmCompyIntro: TMenuItem;
ImgSoft: TImage;
TimActive: TTimer;
StatusBar1: TStatusBar;
ImgActive: TImage;
procedure FrmCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BtnOpLogClick(Sender: TObject);
procedure ItmAskClick(Sender: TObject);
procedure ItmChangePswClick(Sender: TObject);
procedure ItmNewCustClick(Sender: TObject);
procedure ItmRefreshClick(Sender: TObject);
procedure ItmChkCardDevClick(Sender: TObject);
procedure PrdFrmClntMainIni(Sender: TObject);
procedure PrdDCOMIni(Sender: TObject);
procedure PrdClntDataSetIni(Sender: TObject);
procedure PrdClntMainMenuIni(Sender: TObject; bCanUse: Boolean);
procedure PrdClntCntResultCheck(Sender: TObject);
Procedure PrdRemoteConnect(Sender: TObject);
Procedure PrdRemoteLogOff(Sender: TObject);
procedure BtnCloseSysClick(Sender: TObject);
procedure ItmCustBuyClick(Sender: TObject);
procedure ItmEdtCustInfoClick(Sender: TObject);
procedure ItmPatchClick(Sender: TObject);
procedure ItmUnBuyClick(Sender: TObject);
procedure ItmCustCloseClick(Sender: TObject);
procedure ItmCreateChkCardClick(Sender: TObject);
procedure ItmCustChkClick(Sender: TObject);
procedure ItmReadCardClick(Sender: TObject);
procedure ItmClearChkCardClick(Sender: TObject);
procedure ImgNewCustClick(Sender: TObject);
procedure ImgChgPswClick(Sender: TObject);
procedure ImgReadCardClick(Sender: TObject);
procedure ImgCustBuyClick(Sender: TObject);
procedure ItmSoftInfoClick(Sender: TObject);
procedure ItmCompyIntroClick(Sender: TObject);
procedure TimActiveTimer(Sender: TObject);
procedure ImgActiveClick(Sender: TObject);
procedure ImgSoftClick(Sender: TObject);
private
{ Private declarations }
iActive: integer;
BmpAct: Array[1..MaxCLntSwayBmpNum] of TBitmap;
public
{ Public declarations }
end;
var
FrmClntMain: TFrmClntMain;
RecNImsInfo:RecNImsInfoType;
bOpInUse: Boolean=False; //系统操作员是否已登记
CntResult: CntResultType;//Remote Connect Result
RecOpInfo: RecOpInfoType;//系统操作员信息
Procedure PrdGetNIMSInfo(var RecNImsInfo: RecNImsInfoType);
export;far;external 'NIMSsys.dll';
Procedure PrdGetSrvHostInfo(var SrvHost: RecHostInfoType);
export;far;external 'NIMSsys.dll';
Function bFunNImsInied: Boolean;
export;far;external 'NIMSsys.dll';
implementation
uses RWCard, OpLog, Open, Refresh, CustChk, AboutSoft, AboutCompy;
{$R *.DFM}
procedure TFrmClntMain.FrmCreate(Sender: TObject);
var
iCount: integer;
sParentDir,sClntDBDir,sBmpDir: string;
begin
BorderIcons:=[biSystemMenu,biMinimize];
bOpInUse:=False; iActive:=0;
FrmRWCard:=TFrmRWCard.Create(Self);//生成写卡器操作模块
sParentDir:=ExtractFileDir(GetCurrentDir);
sClntDBDir:=sParentDir+DefClntDirKey+'\Data';
try
if Session.IsAlias(DefClntAlias) then
Session.DeleteAlias(DefClntAlias);
finally
if not Session.IsAlias(DefClntAlias) then
Session.AddStandardAlias(DefClntAlias,sClntDBDir,'PARADOX');
end;
sBmpDir:=sParentDir+DefClntDirKey+'\Pic';
for iCount:=1 to MaxCLntSwayBmpNum do begin
BmpAct[iCount]:=TBitmap.Create;
BmpAct[iCount].LoadFromFile(sBmpDir+'\Torch'+inttostr(iCount)+'.bmp');
end;
end;
procedure TFrmClntMain.FormClose(Sender: TObject;
var Action: TCloseAction);
var
iCount: integer;
begin
if bOpInUse then BtnOpLogClick(Sender)//退出时系统操作员注销
else FrmRWCard.bFunCardDevExit; //关闭写卡器
FrmRWCard.Free; //释放写卡器操作模块
for iCount:=1 to MaxCLntSwayBmpNum do
BmpAct[iCount].Free;
if Session.IsAlias(DefClntAlias) then
Session.DeleteAlias(DefClntAlias);
end;
procedure TFrmClntMain.FormShow(Sender: TObject);
begin
bOpInUse:=False;
PrdFrmClntMainIni(Sender); //初始化窗体
PrdGetNImsInfo(RecNImsInfo);//取得Client软件信息
PrdRemoteConnect(Sender); //登录到服务器确认软件合法性
end;
procedure TFrmClntMain.PrdFrmClntMainIni(Sender: TObject);
var
sClassStr: String;
begin
if bOpInUse=True then begin
{$ifndef Def_Test}
TimActive.Enabled:=True;
TimActive.Interval:=400; //动画放慢
{$endif}
{更新系统操作界面开始}
BtnOpLog.Caption:='操作员退出<<';
PrdClntMainMenuIni(Sender,bOpInUse);
{更新系统操作界面结束}
end
else begin
{$ifndef Def_Test}
TimActive.Enabled:=True;
TimActive.Interval:=200; //动画正常
{$endif}
{初始化系统操作界面开始}
CntResult:=CntNone;
with RecOpInfo do begin
sAccount:=''; sOpPsw:='';
sOpName:=''; cOpClass:=DefSysNullChar;
sOpMark:='...';
end;
BtnOpLog.Caption:='操作员登录>>';
PrdDCOMIni(Sender);
PrdClntDataSetIni(Sender);
PrdClntMainMenuIni(Sender,bOpInUse);
{初始化系统操作界面结束}
end;
LabCompy.Caption:=RecNImsInfo.sCompy;{初始化操作状态}
LabAccount.Caption:='登录帐号: '+RecOpInfo.sAccount;
LabName.Caption:= '姓 名: '+RecOpInfo.sOpName;
LabMark.Caption:= ' ['+RecOpInfo.sOpMark+']';
if RecOpInfo.cOpClass=DefSysOpChar then sClassStr:=DefSysOpClass
else sClassStr:='';
LabClass.Caption:= '操作级别: '+sClassStr;
end;
procedure TFrmClntMain.PrdDCOMIni(Sender: TObject);
begin
PrdGetSrvHostInfo(RecNImsInfo.SrvHost);
with DCOMCntToSever do begin
ComputerName:=RecNImsInfo.SrvHost.sHostName;
Connected:=False; LoginPrompt:=False;
//接口名:NetImsServer.NImsSrv
ServerGUID:=DefSrvGUID;
end;
end;
procedure TFrmClntMain.PrdClntDataSetIni(Sender: TObject);
begin
with FrmClntMain.ClientDataSet do begin
Active:=False; AutoCalcFields:=False;
end;
end;
procedure TFrmClntMain.PrdClntMainMenuIni(Sender: TObject; bCanUse: Boolean);
var
iCount,iItemNum: integer;
begin
iItemNum:=MainMenu.Items.Count;
if bCanUse=True then begin
GrpBoxRapidBtn.Caption:='快捷操作';
LabMsg.Visible:=False;
ImgChgPsw.Enabled:=True; // 快捷方式
ImgChgPsw.Visible:=True;
ImgNewCust.Enabled:=True;ImgNewCust.Visible:=True;
ImgCustBuy.Enabled:=True;ImgCustBuy.Visible:=True;
ImgReadCard.Enabled:=True;ImgReadCard.Visible:=True;
ImgSoft.Enabled:=True;ImgSoft.Visible:=True;
for iCount:=0 to iItemNum-2 do begin
MainMenu.Items[iCount].Enabled:=True;
MainMenu.Items[iCount].Visible:=True;
end; //end for
end
else begin
GrpBoxRapidBtn.Caption:='系统提示';
LabMsg.Visible:=True;
LabMsg.Caption:=
' "预付费管理系统"由西清智能表业有限公司开发,'+#13
+'适用于西清智能表业有限公司生产的预付费电度表。'+#13
+' 本系统可以根据用户实际使用情况为用户添加或'+#13
+'删除软件中的某些功能。'+#13
+' 用户在使用本系统过程中若有改进意见,请您与'+#13
+'西清智能表业有限公司联系。我们将根据您的意见改'+#13
+'进本系统,增强系统的安全性和可靠性,使用户使用'+#13
+'本系统更加快捷、方便!'+#13#13
+' 西清智能表业有限公司NIms软件开发组';
ImgChgPsw.Enabled:=False; // 快捷方式
ImgChgPsw.Visible:=False;
ImgNewCust.Enabled:=False;ImgNewCust.Visible:=False;
ImgCustBuy.Enabled:=False;ImgCustBuy.Visible:=False;
ImgReadCard.Enabled:=False;ImgReadCard.Visible:=False;
ImgSoft.Enabled:=False;ImgSoft.Visible:=False;
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 TFrmClntMain.PrdRemoteConnect(Sender: TObject);
begin //远程鉴别
if not bFunNImsInied then CntResult:=UnRegNetIms
else begin
try
with RecNImsInfo do begin
with DCOMCntToSever do begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -