📄 open.pas
字号:
var CanSelect: Boolean);
begin
if iSelctRow>0 then StrGrid.Cells[0,iSelctRow]:='';
if ARow>0 then begin
iSelctRow:=ARow; StrGrid.Cells[0,iSelctRow]:='*';
CustRW.iCustNo:=strtoint(StrGrid.Cells[1,iSelctRow]);
bCanWrite:=True; BtnOK.Caption:='用户补卡';
end;
end;
procedure TFrmOpen.FormShow(Sender: TObject);
begin
PrdCustRWIni(Sender); //初始化用户所有信息
PrdFrmOpenIni(Sender);
end;
Procedure TFrmOpen.PrdFrmOpenIni(Sender: TObject);
begin
MskEdtCustNo.Text:=inttostr(CustRW.iCustNo); //初始化用户信息
with CustRW.Cust do begin
MskEdtCustName.Text:=sCustName;
MskEdtIDNo.Text:=sIDNo; EdtMark.Text:=sMark;
end;
with CustRW.EM do begin
MskEdtENo.Text:=sENo; //初始化“电表信息”
MskEdtEDate.Text:=sFunGetStrByDate(dtEDate);
MskEdtEDegree.Text:=inttostr(iEDegree);
MskEdtERemind.Text:=inttostr(iERemind);
MskEdtEWarn.Text:=inttostr(iEWarn);
MskEdtESum.Text:=inttostr(iESum);
MskEdtEBuyLmt.Text:=inttostr(iEBuyLmt);
MskEdtBuyNum.Text:=inttostr(iTotalNum);
end;
PrdComboBoxIni(Sender);
if EnterMode=NewCustMode then begin
//设置“用户信息”Enabled 属性
GrpBoxCustInfo.Caption:='用户信息';
MskEdtCustNo.Enabled:=False; MskEdtCustName.Enabled:=True;
MskEdtIDNo.Enabled:=True; EdtMark.Enabled:=True;
//设置“电表信息”Enabled 属性
PageCtrlInfo.ActivePage:=TabSheetMeter;
MskEdtENo.Enabled:=True; MskEdtEDate.Enabled:=False;
MskEdtEDegree.Enabled:=True; ComboBoxEConst.Enabled:=True;
MskEdtERemind.Enabled:=True; MskEdtEWarn.Enabled:=True;
MskEdtESum.Enabled:=False; MskEdtBuyNum.Enabled:=False;
//设置"申购信息"Enabled 属性
MskEdtEBuy.Enabled:=True; MskEdtEBuyLmt.Enabled:=True;
MskEdtEBuy.Text:=inttostr(CustRW.Buy.iECurBuy); //初始化"申购信息"
//初始化按键
BtnOK.Caption:='开户'; BtnCancel.Caption:='退出';
end // end of NewCustMode
else if EnterMode = CustBuyMode then begin
//设置“用户信息”Enabled 属性
GrpBoxCustInfo.Caption:='用户信息';
MskEdtCustNo.Enabled:=False; MskEdtCustName.Enabled:=False;
MskEdtIDNo.Enabled:=False; EdtMark.Enabled:=False;
//设置“电表信息”Enabled 属性
PageCtrlInfo.ActivePage:=TabSheetMeter;
MskEdtENo.Enabled:=False; MskEdtEDate.Enabled:=False;
MskEdtEDegree.Enabled:=False; ComboBoxEConst.Enabled:=False;
MskEdtERemind.Enabled:=False; MskEdtEWarn.Enabled:=False;
MskEdtESum.Enabled:=False; MskEdtBuyNum.Enabled:=False;
//设置"申购信息"Enabled 属性
MskEdtEBuy.Enabled:=True; MskEdtEBuyLmt.Enabled:=False;
//初始化按键
BtnCancel.Caption:='退出';
if bCanWrite then begin
BtnOK.Caption:='用户申购'; PanelInfo.Visible:=True;
end
else begin
MskEdtEBuy.Text:=''; //初始化"申购信息"
BtnOK.Caption:='读用户记录'; PanelInfo.Visible:=False;
end;
end // end of CustBuyMode
else if EnterMode = EdtCustMode then begin
//设置“用户信息”Enabled 属性
GrpBoxCustInfo.Caption:='用户信息';MskEdtCustNo.Enabled:=False;
MskEdtCustName.Enabled:=False; MskEdtIDNo.Enabled:=False;
//设置“电表信息”Enabled 属性
PageCtrlInfo.ActivePage:=TabSheetMeter;
MskEdtENo.Enabled:=False; MskEdtEDate.Enabled:=False;
MskEdtEDegree.Enabled:=False; ComboBoxEConst.Enabled:=False;
MskEdtERemind.Enabled:=True; MskEdtEWarn.Enabled:=True;
MskEdtESum.Enabled:=False; MskEdtBuyNum.Enabled:=False;
//设置"申购信息"Enabled 属性
MskEdtEBuy.Enabled:=False; MskEdtEBuyLmt.Enabled:=True;
ComboBoxEPriceType.Enabled:=False;
//初始化按键
BtnCancel.Caption:='退出';
if bCanWrite then begin
BtnOK.Caption:='修改数据'; PanelInfo.Visible:=True;
EdtMark.Enabled:=True;
end
else begin
MskEdtEBuy.Text:=''; //初始化"申购信息"
BtnOK.Caption:='读用户数据'; PanelInfo.Visible:=False;
EdtMark.Enabled:=False;
end;
end//end if
else if EnterMode = CustUnBuyMode then begin
GrpBoxCustInfo.Enabled:=False;
PanelInfo.Visible:=False; PanelInfo.Enabled:=False;
PageCtrlInfo.ActivePage:=TabSheetMeter;
if bCanWrite then begin
BtnOK.Caption:='用户结算'; PanelInfo.Visible:=True;
end
else begin
MskEdtEBuy.Text:=''; //初始化"申购信息"
BtnOK.Caption:='读用户数据';
end;
end//end if
else if EnterMode = CustCloseMode then begin
GrpBoxCustInfo.Enabled:=False;
PanelInfo.Visible:=False; PanelInfo.Enabled:=False;
PageCtrlInfo.ActivePage:=TabSheetMeter;
if bCanWrite then begin
BtnOK.Caption:='用户销户'; PanelInfo.Visible:=True;
end
else begin
MskEdtEBuy.Text:=''; //初始化"申购信息"
BtnOK.Caption:='读用户数据';
end;
end//end if
else if EnterMode = CustPatchMode then begin
GrpBoxCustInfo.Caption:='请输入要查找的用户信息';
MskEdtCustNo.EditMask:=''; MskEdtCustName.EditMask:='';
MskEdtEBuy.Text:=inttostr(CustRW.Buy.iECurBuy);
MskEdtIDNo.EditMask:=''; BtnCancel.Caption:='退出';
if bCanWrite then begin
BtnOK.Caption:='用户补卡';
PanelInfo.Enabled:=False; PanelInfo.Visible:=True;
TabSheetFind.Enabled:=False; TabSheetMeter.Enabled:=False;
PageCtrlInfo.ActivePage:=TabSheetMeter;
end
else begin
BtnOK.Caption:='查找用户'; GrpBoxCustInfo.Enabled:=True;
EdtMark.Enabled:=False; TabSheetMeter.Enabled:=False;
PanelInfo.Enabled:=False; PanelInfo.Visible:=False;
StrGrid.Cells[1,0]:='用户编号';StrGrid.Cells[2,0]:='用户名';
StrGrid.Cells[3,0]:='身份证号';
LabMsg.Caption:='请输入要查找用户信息(可输入用户全部信息或部分信息,'
+'不清楚的可以不输入)'+#13#13+'查找完毕后请单击要选择的用户!'
end;
end;//end if
end;
Procedure TFrmOpen.PrdComboBoxIni(Sender: TObject);
var
sStrItem: String;
btRet: Byte;
RecEMKind: RecEMeterKindType;
RecEPKind: RecEPriceKindType;
begin
if ComboBoxEConst.Items.Count=0 then begin
with RecEMKind do begin
sAilas:=DefClntAlias; iEKind:=0;
repeat //读取本地电表数据库
btRet:=btFunGetEMeterKind(RecEMKind);
if btRet=Byte(CntSuccess) then begin
sStrItem:=inttostr(iEKind)+'[电表常数'
+inttostr(iEConst)+' '+sEMark+']';
ComboBoxEConst.Items.Add(sStrItem);
end; iEKind:=iEKind+1;
until btRet<>Byte(CntSuccess);
end;
end; ComboBoxEConst.ItemIndex:=CustRW.EM.iEConstKind;
if ComboBoxEPriceType.Items.Count=0 then begin
with RecEPKind do begin
sAilas:=DefClntAlias; iEPriceKind:=0;
repeat //读取本地电表数据库
btRet:=btFunGetEPriceKind(RecEPKind);
if btRet=Byte(CntSuccess) then begin
sStrItem:=inttostr(iEPriceKind)+'['+sEPriceName
+floattostr(fEPrice)+'元/度 '+sEPriceMark+']';
ComboBoxEPriceType.Items.Add(sStrItem);
end;
iEPriceKind:=iEPriceKind+1;
until btRet<>Byte(CntSuccess);
end;
end; ComboBoxEPriceType.ItemIndex:=CustRW.Buy.iEPriceKind;
end;
procedure TFrmOpen.ComboBoxEConstChange(Sender: TObject);
var
btRet: Byte;
iIndex: integer;
RecEMKind: RecEMeterKindType;
begin
RecEMKind.sAilas:=DefClntAlias;
RecEMKind.iEKind:=ComboBoxEConst.ItemIndex;
btRet:=btFunGetEMeterKind(RecEMKind);
if btRet=Byte(CntSuccess) then begin
CustRW.EM.iEConstKind:=RecEMKind.iEKind;
CustRW.EM.iEConst:=RecEMKind.iEConst;
CustRW.sEMemDT:=RecEMKind.sEMemDT;
end;
end;
procedure TFrmOpen.ComboBoxEPriceTypeChange(Sender: TObject);
var
btRet: Byte;
iIndex: integer;
RecEPKind: RecEPriceKindType;
begin
RecEPKind.sAilas:=DefClntAlias;
RecEPKind.iEPriceKind:=ComboBoxEPriceType.ItemIndex;
btRet:=btFunGetEPriceKind(RecEPKind);
if btRet=Byte(CntSuccess) then begin
CustRW.Buy.iEPriceKind:=RecEPKind.iEPriceKind;
CustRW.Buy.fEPrice:=RecEPKind.fEPrice;
end;
end;
procedure TFrmOpen.BtnCancelClick(Sender: TObject);
begin
ModalResult:=mrCancel;
end;
procedure TFrmOpen.BtnOKClick(Sender: TObject);
Label TOLogError,TOLogOK,TOBuyReadError,TOBuyReadOK,
TOBuyError,TOBuyOK,TOEdtReadError,TOEdtReadOK,
TOEdtError,TOEdtOK,TOUnBuyReadError,TOUnBuyReadOK,
TOUnBuyError,TOUnBuyOK,TOCloseReadError,TOCloseReadOK,
TOCloseError,TOCloseOK,TOPatchError,TOPatchOK;
var
iCount,iRow,iKeepESum,iKeepTotalNum: integer;
iE_RemainSum,iE_Buy,iIntA,iIntB: integer;
wsStrA,wsStrB: widestring;
fE_Refund,fE_Price: Double;
dtGetDate: TDateTime;
ReadCD{Read Card Data}: RecRWCustDataType;
ReadCK{Read Card Kind}: RecWriteCardKindType;
begin
for iCount:=1 to MaxCntRsltNum do aCntRslt[iCount]:=CntNone;
if EnterMode=NewCustMode then begin//用户开户
if not bFunGetInputRec(Sender) then Exit;
with DCOMOpen do begin
with CustRW.Cust do begin //写用户信息数据库
Connected:=True;
aCntRslt[1]:=AppServer.btFunAddNewCust(iIntA,sCustName,
sIDNo,sICSC,sMark);
Connected:=False; CustRW.iCustNo:=iIntA;
end; if aCntRslt[1]<>CntRecOK then goto TOLogError;
with CustRW.EM do begin //写电表信息数据库
Connected:=True;
aCntRslt[2]:=AppServer.btFunAddNewEMeterInfo(CustRW.iCustNo,
sENo,dtEDate,iEDegree,iEConstKind,iEConst,iEBuyLmt,
iERemind,iEWarn,iESum,iTotalNum);
Connected:=False;
if aCntRslt[2]=CntRecExisted then //若电表已存在显示错误信息
wFunShowError('电表('+CustRW.EM.sENo+')'+' 已有用户使用!',[mbOK]);
end; if aCntRslt[2]<>CntRecOK then goto TOLogError;
with CustRW.Buy do begin //写申购记录
Connected:=True;
aCntRslt[3]:=AppServer.btFunAddBuyRecord(CustRW.iCustNo,iBuyNum,
dtBuyDate,iECurBuy,iEPriceKind,fEPrice,RecOpInfo.sOpName,
RecNImsInfo.ClntHost.sHostName);
Connected:=False; fE_Refund:=iECurBuy*fEPrice;
end; if aCntRslt[3]<>CntRecOK then goto TOLogError;
end;//end DCOMOpen
PrdFrmOpenIni(Sender);//显示开户记录内容
WriteCK.ECK:=NewCustCard;
if not FrmRWCard.bFunWriteCardCustData(CustRW,WriteCK)//写用户数据
then goto TOLogError;
MessageDlgPos('开户成功'+#13+'应收款:'+floattostr(fE_Refund)+'元'#13
+'打印申购记录吗?',mtConfirmation,[mbYes]+[mbNo],
0,BtnOK.Left,BtnOK.Top);
TOLogOK:
ModalResult:=mrOK; Exit;//写入成功
TOLogError://写入失败则清除已写记录
with DCOMOpen do begin
if aCntRslt[3]=CntRecOK then begin
Connected:=True;//删除已写入的申购记录
AppServer.btFunClearDefBuyRecord(CustRW.iCustNo,CustRW.Buy.iBuyNum);
Connected:=False;
end;
if aCntRslt[3]=CntRecOK then begin
Connected:=True;//删除已写入的电表信息
AppServer.btFunClearDefEMeterInfo(CustRW.iCustNo);
Connected:=False;
end;
if aCntRslt[1]=CntRecOK then begin
Connected:=True;//删除已写入的用户信息
AppServer.btFunClearDefCust(CustRW.iCustNo);
Connected:=False;
end;
wFunShowError('用户开户失败!',[mbOK]); Exit;
end;//end DCOMOpen
end //end if 开户完成
else if EnterMode=CustBuyMode then begin
case bCanWrite of
False: begin{ bCanWrite=False 先读卡}
if not FrmRWCard.bFunReadCardCustData(ReadCD,ReadCK)//读用户数据
then goto TOBuyReadError;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -