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

📄 main.pas

📁 简单的电力计息系统(针对用友财务系统)
💻 PAS
📖 第 1 页 / 共 3 页
字号:
UNIT main;

INTERFACE

USES
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ImgList, ExtCtrls, RzPanel, Menus, RzButton, ActnList, RzStatus,
  RzSplit, RzRadGrp, ComCtrls, RzTreeVw, RzDTP, StdCtrls, Mask, RzEdit,
  RzLabel, RzCommon, DateUtils, RzForms, DB, ADODB, Buttons, Consts,
  RzTray, RzSpnEdt, RzRadChk, DBClient, Grids, DBGrids, RzDBGrid, RzTabs,
  GridsEh, DBGridEh, RzCmboBx, PropFilerEh, PrnDbgeh, PropStorageEh,
  DBGridEhToExcel, frxClass, MemTableEh, frxDesgn;

TYPE
  TAPz=RECORD
    cpbh:STRING;
    pzbh:STRING;
    fse:Currency;                       //发生额
    kmbh:STRING;
    kmmc:STRING;
    dfkmbh:STRING;
    dfbank:STRING;
    dfkmmc:STRING;
    bank:STRING;
    checker:STRING;
    biller:STRING;                      //制单人
    digest:STRING;                      //摘要
    billdate:TDateTime;
  END;

  TfmMain=CLASS(TForm)
    StatBar:TRzStatusBar;
    Stat0:TRzStatusPane;
    Stat1:TRzStatusPane;
    Stat2:TRzStatusPane;
    pmTray:TPopupMenu;
    pmiAbout:TMenuItem;
    MenuItem2:TMenuItem;
    TrayIcon:TRzTrayIcon;
    pmiExit:TMenuItem;
    RzToolbar1:TRzToolbar;
    BtnExit:TRzToolButton;
    RzPanel1:TRzPanel;
    pnlSetup:TRzSizePanel;
    PageSet:TRzPageControl;
    tabsBase:TRzTabSheet;
    RzLabel1:TRzLabel;
    RzLabel2:TRzLabel;
    edtRateKM:TRzEdit;
    tabsDataServer:TRzTabSheet;
    RzLabel3:TRzLabel;
    RzLabel4:TRzLabel;
    lblDataPass:TRzLabel;
    edtDataUser:TRzEdit;
    edtDataServer:TRzEdit;
    edtDataPass:TRzEdit;
    tasKMList:TRzTabSheet;
    tabsRate:TRzTabSheet;
    pnlMain:TRzPanel;
    ImageList1:TImageList;
    dsRate:TDataSource;
    cdsRate:TClientDataSet;
    cdsRateRateID:TAutoIncField;
    cdsRateRateRate:TCurrencyField;
    cdsRateRateDate:TDateField;
    cdsRateRateSDate:TDateField;
    FrameCtrl:TRzFrameController;
    PageRate:TRzPageControl;
    tabsMXRate:TRzTabSheet;
    tabsHzRate:TRzTabSheet;
    BtnWeekView:TRzToolButton;
    BtnCascade:TRzToolButton;
    BtnPrint:TRzToolButton;
    BtnPrintPreview:TRzToolButton;
    RzLabel5:TRzLabel;
    RzLabel6:TRzLabel;
    edtAccID1:TRzSpinEdit;
    pnlDateRang:TRzSizePanel;
    edtBeginDate:TRzDateTimePicker;
    edtEndDate:TRzDateTimePicker;
    RzLabel7:TRzLabel;
    RzLabel8:TRzLabel;
    StatProgress:TRzProgressStatus;
    RzClockStatus1:TRzClockStatus;
    StatSpace:TRzStatusPane;
    GridMx:TDBGridEh;
    RzLabel9:TRzLabel;
    edtCurrYear:TRzSpinEdit;
    RzLabel10:TRzLabel;
    edtCurrPeriod:TRzSpinEdit;
    btnTestLink:TRzBitBtn;
    edtAccID:TRzComboBox;
    BtnOpen:TRzToolButton;
    GridHz:TDBGridEh;
    RzSpacer1:TRzSpacer;
    RzSpacer2:TRzSpacer;
    RzSpacer3:TRzSpacer;
    dsRateMX:TDataSource;
    dsRateHZ:TDataSource;
    GridKm:TDBGridEh;
    dsKm:TDataSource;
    PropSaveMan:TIniPropStorageManEh;
    PrintGrid:TPrintDBGridEh;
    PropSave:TPropStorageEh;
    RzToolbar2:TRzToolbar;
    GridRate:TRzDBGrid;
    BtnInsertRecord:TRzToolButton;
    BtnSave:TRzToolButton;
    BtnDeleteRecord:TRzToolButton;
    BtnCancel:TRzToolButton;
    RzSpacer4:TRzSpacer;
    RzSpacer5:TRzSpacer;
    RzSpacer6:TRzSpacer;
    BtnSaveAll:TRzToolButton;
    RzSpacer7:TRzSpacer;
    tabsPzList:TRzTabSheet;
    GridPz:TDBGridEh;
    pmPzPrint:TPopupMenu;
    pmiPzSingle:TMenuItem;
    MenuItem3:TMenuItem;
    pmiPzMulti:TMenuItem;
    RzSpacer8:TRzSpacer;
    dsPz:TDataSource;
    mmtPZ:TMemTableEh;
    BtnViewList:TRzMenuButton;
    pmiPzList:TMenuItem;
    frxReport:TfrxReport;
    BtnViewDetails:TRzToolButton;
    frxDesigner:TfrxDesigner;
    PROCEDURE FormCreate(Sender:TObject);
    PROCEDURE FormShow(Sender:TObject);
    PROCEDURE FormClose(Sender:TObject; VAR Action:TCloseAction);
    PROCEDURE BtnExitClick(Sender:TObject);
    PROCEDURE RzToolbar1DblClick(Sender:TObject);
    PROCEDURE pmiReLoginClick(Sender:TObject);
    PROCEDURE cktUnitDblClick(Sender:TObject);
    PROCEDURE pmiExitClick(Sender:TObject);
    PROCEDURE pmiAboutClick(Sender:TObject);
    PROCEDURE cktUnitSetDisplayItemText(Sender:TObject; VAR DisplayText:STRING);
    PROCEDURE BtnWeekViewClick(Sender:TObject);
    PROCEDURE edtCurrYearChange(Sender:TObject);
    PROCEDURE edtRateKMChange(Sender:TObject);
    PROCEDURE edtAccID1Change(Sender:TObject);
    PROCEDURE edtEndDateChange(Sender:TObject);
    PROCEDURE edtBeginDateChange(Sender:TObject);
    PROCEDURE btnTestLinkClick(Sender:TObject);
    PROCEDURE BtnOpenClick(Sender:TObject);
    PROCEDURE BtnCascadeClick(Sender:TObject);
    PROCEDURE GridKmDblClick(Sender:TObject);
    PROCEDURE PageRateChange(Sender:TObject);
    PROCEDURE BtnPrintPreviewClick(Sender:TObject);
    PROCEDURE BtnPrintClick(Sender:TObject);
    PROCEDURE edtAccIDChange(Sender:TObject);
    PROCEDURE BtnInsertRecordClick(Sender:TObject);
    PROCEDURE BtnDeleteRecordClick(Sender:TObject);
    PROCEDURE BtnSaveClick(Sender:TObject);
    PROCEDURE BtnCancelClick(Sender:TObject);
    PROCEDURE BtnSaveAllClick(Sender:TObject);
    PROCEDURE BtnViewListClick(Sender:TObject);
    PROCEDURE frxReportGetValue(CONST VarName:STRING; VAR Value:Variant);
    PROCEDURE GridPzCellClick(Column:TColumnEh);
    PROCEDURE pmiPzSingleClick(Sender:TObject);
    PROCEDURE pmiPzMultiClick(Sender:TObject);
    PROCEDURE GridPzKeyDown(Sender:TObject; VAR Key:Word; Shift:TShiftState);
    PROCEDURE BtnViewDetailsClick(Sender:TObject);
  PRIVATE
    Test:TADOConnection;
    ActiveGrid:TDBGridEh;
    sReportTitle:STRING;
    bRate:Boolean;
    APz:TAPz;
    PROCEDURE ErrorProc(Sender:TObject; E:Exception);
    PROCEDURE SetButtonStat;
  PUBLIC
    PROCEDURE SetInputRange;
    FUNCTION ReLogin:Boolean;
    PROCEDURE DisplayUnit(bvisible:Boolean);
    PROCEDURE aqUnitAfterScroll(DataSet:TDataSet);
    PROCEDURE SetYearRang;
    PROCEDURE SetDateRang(bCls:Boolean=false);
    FUNCTION GetRate(ADate:STRING):Currency;
    FUNCTION FormatAccID(AID:STRING):STRING;
    FUNCTION OpenYearDB(bInfo:Boolean=false):Boolean;
    PROCEDURE TruncateTempData;
    FUNCTION GetOneVoucherInfo(AData:TDataSet):TAPz;
    PROCEDURE PrintABarCode(APz:TAPz; bPreview:Boolean=false);
    FUNCTION PrintBarCode():integer;
  END;

VAR
  fmMain:TfmMain;

IMPLEMENTATION

{$R *.dfm}

USES DM, About, PublicFunction, ADOFuncs, yjkType, yjkConsts, progress,
  XFunc, xfuncs, XDias;

PROCEDURE TfmMain.ErrorProc(Sender:TObject; E:Exception);
BEGIN
  Logs.Add(E.ClassName+'='+E.Message);
  MyError('应用程式发生错误。'+#10#13#10#13+E.Message+#10#13#10#13+'请记录以上的错误讯息并速洽系统管理员!');
  Logs.SaveToFile(AppPath.Temp+'Error'+FormatDateTime('yyyymmddmmhhss', now)+'.log');
END;

PROCEDURE TfmMain.FormCreate(Sender:TObject);
BEGIN
  Self.Caption:=Application.Title;
  Application.OnException:=ErrorProc;
  BtnViewDetails.Visible:=false;
END;

PROCEDURE TfmMain.FormShow(Sender:TObject);
BEGIN
  ShowInfo(Stat0, '用户: '+YDB.Oper);
  ShowInfo(Stat1, '系统时间: '+YDB.CurrDate);

  Self.SetButtonStat;
  //edtRateKM.Text:=sRateKM;
  Self.edtRateKMChange(NIL);
  edtCurrYear.Text:=FormatDateTime('yyyy', now);
  Self.PageRateChange(NIL);
  IF FileExists(AppPath.Temp+'rate.dat') THEN
    cdsRate.LoadFromFile(AppPath.Temp+'rate.dat');
  PageSet.ActivePageIndex:=0;
END;

PROCEDURE TfmMain.FormClose(Sender:TObject; VAR Action:TCloseAction);
BEGIN
  cdsRate.SaveToFile(AppPath.Temp+'rate.dat');
  Action:=caFree;
END;

PROCEDURE TfmMain.BtnExitClick(Sender:TObject);
BEGIN
  Self.Close;
END;

PROCEDURE TfmMain.RzToolbar1DblClick(Sender:TObject);
BEGIN
  ShowAbout;
END;

PROCEDURE TfmMain.SetButtonStat;
BEGIN
  BtnInsertRecord.Enabled:=cdsRate.Active AND(cdsRate.State=dsBrowse);
  BtnDeleteRecord.Enabled:=cdsRate.Active AND(cdsRate.State=dsBrowse);
  BtnSave.Enabled:=cdsRate.Active AND((cdsRate.State=dsEdit)OR(cdsRate.State=dsInsert));
  BtnCancel.Enabled:=cdsRate.Active AND((cdsRate.State=dsEdit)OR(cdsRate.State=dsInsert));
  BtnWeekView.Enabled:=bLinked;
  BtnCascade.Enabled:=bLinked AND bRate;
  BtnPrint.Enabled:=bLinked AND bRate;
  BtnPrintPreview.Enabled:=bLinked AND bRate;
  BtnViewList.Enabled:=bLinked;
  BtnSaveAll.Enabled:=bLinked AND bRate;
END;

PROCEDURE TfmMain.SetInputRange;
BEGIN
  //
END;

FUNCTION TfmMain.ReLogin:Boolean;
BEGIN
  //
END;

PROCEDURE TfmMain.pmiReLoginClick(Sender:TObject);
BEGIN
  Self.ReLogin;
END;

PROCEDURE TfmMain.cktUnitDblClick(Sender:TObject);
VAR
  Node:TTreeNode;
  unitid:STRING;
  OldUnitID:integer;
BEGIN

END;

PROCEDURE TfmMain.DisplayUnit(bvisible:Boolean);
BEGIN

END;

PROCEDURE TfmMain.aqUnitAfterScroll(DataSet:TDataSet);
BEGIN
  //
END;

PROCEDURE TfmMain.pmiExitClick(Sender:TObject);
BEGIN
  BtnExit.Click;
END;

PROCEDURE TfmMain.pmiAboutClick(Sender:TObject);
BEGIN
  ShowAbout;
END;

PROCEDURE TfmMain.cktUnitSetDisplayItemText(Sender:TObject;
  VAR DisplayText:STRING);
BEGIN
  DisplayText:=trim(DisplayText);
END;

//目前只考虑2009科目的特殊性, 余额在借方

PROCEDURE TfmMain.BtnWeekViewClick(Sender:TObject);

//一个科目在指定的时间内的发生数

  FUNCTION GetKmFss(AKM:STRING; D1, D2:TDateTime):Currency;
  VAR sSQL:STRING;
  BEGIN
    result:=0.00;
    sSQL:=' SELECT  ccode, (sum(mc)-sum(md)) as AMount '
      +' FROM '+CurrYearDB+'..GL_accvouch '
      +' where iflag is null and dbill_date>='+QuotedStr(FormatDateTime('yyyy-mm-dd', D1))
      +' and dbill_date<='+QuotedStr(FormatDateTime('yyyy-mm-dd', D2))
      +' and ccode in ('+QuotedStr(AKM)+')'
      +' group by ccode'
      +' order by ccode';

    TRY
      OpenSQL(FDM.aqTemp, sSQL);
      IF FDM.aqTemp.RecordCount=1 THEN
        result:=FDM.aqTemp.FieldByName('AMount').AsCurrency;
    FINALLY
      FDM.aqTemp.Close;
    END;
  END;

  //一个科目在指定会计期间的期末余额

  FUNCTION GetKmYe(APeriod, AKM:STRING):Currency;
  VAR sSQL:STRING;
  BEGIN
    result:=0.00;
    IF APeriod='0' THEN APeriod:='1';

    sSQL:=' SELECT ccode, iperiod, cbegind_c, mb, md, mc, cendd_c, me '
      +' FROM '+CurrYearDB+'..GL_accsum '
      +' where ccode in ('+QuotedStr(AKM)+') and iperiod='+APeriod;

    TRY
      OpenSQL(FDM.aqTemp, sSQL);
      IF FDM.aqTemp.RecordCount=1 THEN
        result:=FDM.aqTemp.FieldByName('me').AsCurrency;
    FINALLY
      FDM.aqTemp.Close;
    END;
  END;

  //取指定日期内可用的最大的已结帐会计期间

  FUNCTION GetCanUsePeriod(D1, D2, D3:TDateTime):integer;
  VAR iPeriod, ip:integer;
  BEGIN

⌨️ 快捷键说明

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