📄 main.pas
字号:
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 + -