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

📄 main.pas

📁 晓风财务软件源码,具有财务软基本功能,仅供学习,勿商用,后果与本人无关 1、使用的第三方VCL: FastReport2.6中文版 EHLIB3 sncCurrency SUIPac
💻 PAS
📖 第 1 页 / 共 3 页
字号:
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 + -