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

📄 open.pas

📁 计量功能 事件记录 购电提醒 欠费报警 负荷控制 自检功能 显示功能 用户插卡错误信息显示
💻 PAS
📖 第 1 页 / 共 3 页
字号:
  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 + -