📄 main.pas
字号:
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, SUIImagePanel, SUISideChannel, SUIForm, Menus,
SUIMainMenu, ComCtrls, SUIStatusBar, ToolWin, SUIToolBar, ImgList,
SUIButton, StdCtrls , ExtFunc, DB, ADODB, FR_View, SUIComboBox, FR_DSet,
FR_DBSet, FR_Class, printers;
type
TFrmMain = class(TForm)
suiFrmMain: TsuiForm;
menu: TsuiMainMenu;
M1: TMenuItem;
M2: TMenuItem;
M3: TMenuItem;
M4: TMenuItem;
M5: TMenuItem;
M51: TMenuItem;
M52: TMenuItem;
N8: TMenuItem;
M53: TMenuItem;
M11: TMenuItem;
N2: TMenuItem;
M12: TMenuItem;
M111: TMenuItem;
M112: TMenuItem;
M121: TMenuItem;
M122: TMenuItem;
N7: TMenuItem;
M14: TMenuItem;
N12: TMenuItem;
M124: TMenuItem;
M13: TMenuItem;
N15: TMenuItem;
M123: TMenuItem;
M41: TMenuItem;
M31: TMenuItem;
M32: TMenuItem;
N25: TMenuItem;
M34: TMenuItem;
M341: TMenuItem;
M342: TMenuItem;
M33: TMenuItem;
M24: TMenuItem;
M241: TMenuItem;
M242: TMenuItem;
N33: TMenuItem;
M243: TMenuItem;
N35: TMenuItem;
M244: TMenuItem;
M22: TMenuItem;
M21: TMenuItem;
sb: TsuiStatusBar;
pLeft: TsuiSideChannel;
Splitter1: TSplitter;
N1: TMenuItem;
M23: TMenuItem;
N4: TMenuItem;
M231: TMenuItem;
M232: TMenuItem;
Panel1: TPanel;
tb: TsuiToolBar;
tb3: TToolButton;
tb4: TToolButton;
tb6: TToolButton;
tb8: TToolButton;
tb9: TToolButton;
tb10: TToolButton;
tb11: TToolButton;
tb12: TToolButton;
tb13: TToolButton;
tb17: TToolButton;
ImageList1: TImageList;
p1: TPanel;
p2: TPanel;
p3: TPanel;
suiPanel1: TsuiPanel;
suiPanel2: TsuiPanel;
suiPanel3: TsuiPanel;
Image1: TImage;
Image3: TImage;
Image5: TImage;
Image7: TImage;
Image8: TImage;
Image9: TImage;
Image10: TImage;
Image11: TImage;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
N3: TMenuItem;
M26: TMenuItem;
M25: TMenuItem;
M251: TMenuItem;
M252: TMenuItem;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
Image2: TImage;
Image4: TImage;
Image14: TImage;
Image15: TImage;
Image16: TImage;
Image17: TImage;
Image18: TImage;
Image19: TImage;
Image20: TImage;
Image21: TImage;
Image22: TImage;
ReportView: TfrPreview;
fr: TfrReport;
frDS: TfrDBDataSet;
cbReportName: TsuiComboBox;
cbReportYear: TsuiComboBox;
cbReportMonth: TsuiComboBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
ckYearReport: TsuiCheckBox;
btnQueryReport: TsuiButton;
M261: TMenuItem;
N6: TMenuItem;
M262: TMenuItem;
tq: TADOQuery;
q_Report: TADOQuery;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure M111Click(Sender: TObject);
procedure M112Click(Sender: TObject);
procedure M121Click(Sender: TObject);
procedure M122Click(Sender: TObject);
procedure M21Click(Sender: TObject);
procedure M22Click(Sender: TObject);
procedure M231Click(Sender: TObject);
procedure M232Click(Sender: TObject);
procedure M241Click(Sender: TObject);
procedure M242Click(Sender: TObject);
procedure M243Click(Sender: TObject);
procedure M244Click(Sender: TObject);
procedure M31Click(Sender: TObject);
procedure M341Click(Sender: TObject);
procedure M342Click(Sender: TObject);
procedure M41Click(Sender: TObject);
procedure M123Click(Sender: TObject);
procedure M14Click(Sender: TObject);
procedure M13Click(Sender: TObject);
procedure M251Click(Sender: TObject);
procedure M252Click(Sender: TObject);
procedure Image16Click(Sender: TObject);
procedure Image17Click(Sender: TObject);
procedure Image18Click(Sender: TObject);
procedure Image2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure M53Click(Sender: TObject);
procedure M124Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure M52Click(Sender: TObject);
procedure M51Click(Sender: TObject);
procedure M261Click(Sender: TObject);
procedure M262Click(Sender: TObject);
procedure M32Click(Sender: TObject);
procedure M33Click(Sender: TObject);
procedure ckYearReportClick(Sender: TObject);
procedure cbReportNameChange(Sender: TObject);
procedure btnQueryReportClick(Sender: TObject);
procedure cbReportMonthChange(Sender: TObject);
private
{ Private declarations }
public
procedure SetMenuState;
end;
var
FrmMain: TFrmMain;
implementation
uses Pd, SelectAccount, DeptInfo, EditSubject, Options, StartBalance,
QueryPD, AuditingPD, CredenceSpoor, PublicFunc, DataModule,
QueryAccountZBCX, QueryAccountKMHZ, QueryAccountFSEJYE, CashPD, BankPD,
QueryCashAccount, QueryBankAccount;
{$R *.dfm}
procedure TFrmMain.SetMenuState;
begin
M231.Enabled:=not DM.AccountStartState;
M232.Enabled:=not DM.AccountStartState;
M52.Enabled:=not DM.SoftRegState;
end;
procedure TFrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if (DM.ExitBeforeBackup) and (DM.UserID<>-1) then M121.Click;
if DM.UserID<>-1 then DM.WriteLog('退出系统。');
tq.Close;
q_Report.Close;
DM.adoc.Close;
end;
procedure TFrmMain.FormShow(Sender: TObject);
var
fsa:TFrmSelectAccount;
pID:pInteger;
pName,pPass:pChar;
i,Rights_num:integer;
s:string;
y,m,d:WORD;
begin
Frm_FlashScr(Fun_GetCurrentPath^+'start.bmp');
DM.UserID:=-1;
//选择帐簿
fsa:=TFrmSelectAccount.Create(self);
fsa.ShowModal;
fsa.Destroy;
if not DM.adoc.Connected then
begin
Close;
Exit;
end;
//初始化系统信息变量
tq.Connection:=DM.adoc;
DM.AccountName:=GetOptionsKeyValue(DM.adoc,'帐套名称');
DM.DeptName:=GetOptionsKeyValue(DM.adoc,'单位名称');
DM.DeptManager:=GetOptionsKeyValue(DM.adoc,'单位负责人');
DM.FinanceManager:=GetOptionsKeyValue(DM.adoc,'财务主管');
DM.DeptProperty:=GetOptionsKeyValue(DM.adoc,'单位性质');
DM.AccountStartState:=StrToBool(GetOptionsKeyValue(DM.adoc,'帐套启用状态'));
DM.AccountStartDate:=StrToDate(GetOptionsKeyValue(DM.adoc,'帐套启用时间'));
DecodeDate(DM.AccountStartDate,y,m,d);
DM.AccountStartYear:=y;
DM.AccountStartMonth:=m;
DM.AccountYear:=StrToInt(GetOptionsKeyValue(DM.adoc,'当前会计年度'));
DM.AccountMonth:=StrToInt(GetOptionsKeyValue(DM.adoc,'当前会计月份'));
DM.CashAccountYear:=StrToInt(GetOptionsKeyValue(DM.adoc,'当前现金日记年度'));
DM.CashAccountMonth:=StrToInt(GetOptionsKeyValue(DM.adoc,'当前现金日记月份'));
DM.BankAccountYear:=StrToInt(GetOptionsKeyValue(DM.adoc,'当前银行日记年度'));
DM.BankAccountMonth:=StrToInt(GetOptionsKeyValue(DM.adoc,'当前银行日记月份'));
DM.CarryForwardInterval:=GetOptionsKeyValue(DM.adoc,'结转收支或损益周期');
DM.MID:=Fun_GetMachineSerialNumber^;
tq.Close;
tq.SQL.Clear;
tq.SQL.Add('select * from Options where [Key]='''+DM.MID+'''');
tq.Open;
if tq.RecordCount<1 then
begin
tq.Close;
tq.SQL.Clear;
tq.SQL.Add('insert into Options values('+IntToStr(Fun_GetMaxID(DM.adoc,'Options','id'))+','''+DM.MID+''','''')');
tq.ExecSQL;
end;
tq.Close;
DM.SN:=GetOptionsKeyValue(DM.adoc,DM.MID);
DM.MID:=Fun_GetMachineSerialNumber^;
DM.SoftRegState:=(DM.SN=Fun_NoUnEncryptString(DM.MID+DM.SoftVersionNumber,'SF1-',5,5,0)^);
SetMenuState;
DM.SupperPassword:=Fun_GetSupperPassword^;
sb.Panels[0].Text:='帐套:'+DM.AccountName;
sb.Panels[1].Text:=DM.DeptName;
sb.Panels[2].Text:='财务主管:'+DM.FinanceManager;
if DM.AccountStartState then
sb.Panels[4].Text:='会计期间:'+IntToStr(DM.AccountYear)+'.'+IntToStr(DM.AccountMonth)
else
sb.Panels[4].Text:='会计期间:未启用';
tq.Close;
tq.SQL.Clear;
tq.SQL.Add('select * from SubjectType order by id');
tq.Open;
tq.First;
DM.SubjectTypeNum:=tq.RecordCount;
SetLength(DM.SubjectType,DM.SubjectTypeNum);
for i:=0 to DM.SubjectTypeNum-1 do
begin
DM.SubjectType[i]:=Trim(tq.FieldByName('Name').AsString);
tq.Next;
end;
tq.Close;
s:=GetOptionsKeyValue(DM.adoc,'科目代码长度');
DM.MaxSubjectLevel:=Length(s);
SetLength(DM.SubjectCodeLen,DM.MaxSubjectLevel);
for i:=0 to DM.MaxSubjectLevel-1 do DM.SubjectCodeLen[i]:=StrToInt(Copy(s,i+1,1));
DM.ExitBeforeBackup:=StrToBool(GetOptionsKeyValue(DM.adoc,'退出前备份数据'));
DM.isWriteLog:=StrToBool(GetOptionsKeyValue(DM.adoc,'保存日志'));
if DM.SoftRegState then
begin
FrmMain.Caption:=DM.SoftName+' V'+DM.SoftVersionNumber+' ('+DM.SoftName2+')';
suiFrmMain.Caption:=FrmMain.Caption;
end
else
begin
FrmMain.Caption:=DM.SoftName+' V'+DM.SoftVersionNumber+' ('+DM.SoftName2+')'+' (未注册)';
suiFrmMain.Caption:=FrmMain.Caption;
Frm_MsgBox('系统信息','本软件系统没有经过供应商的授权,部分功能将在一定时间后受到限制。请与软件供应商联系注册本软件产品以获得更完美的服务。',MsgBox_OK_INFO);
end;
//登录
new(pID);
GetMem(pName,100);
GetMem(pPass,100);
if Frm_Login(DM.adoc,'Operator','name','Password','Used',DM.SupperPassword,0,16,pName,pPass,pID)=mrOK then
begin
DM.UserID:=pID^;
DM.UserName:=pName;
DM.UserPassword:=pPass;
end;
FreeMem(pID);
FreeMem(pName,100);
FreeMem(pPass,100);
if DM.UserID=-1 then
begin
Close;
Exit;
end;
sb.Panels[3].Text:='操作员:'+DM.UserName;
DM.WriteLog('登录系统。');
//读权限
Rights_num:=Fun_GetRightsNum(DM.adoc,'Rights');
SetLength(DM.UserRights,Rights_num);
for i:=0 to Rights_num-1 do new(DM.UserRights[i]);
Fun_GetRightsArray(DM.adoc,'Rights','OperatorRights','Operator_id','Rights_id',DM.UserID,DM.UserRIghts);
//读报表信息
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -