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

📄 bankpd.pas

📁 晓风财务软件源码,具有财务软基本功能,仅供学习,勿商用,后果与本人无关 1、使用的第三方VCL: FastReport2.6中文版 EHLIB3 sncCurrency SUIPac
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit BankPD;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, sncCurrency, sncDBCurrency, Grids, DBGridEh, DB, ADODB, ImgList,
  StdCtrls, ExtCtrls, SUIForm, SUIEdit, ComCtrls, SUIButton, Buttons,
  ToolWin , ExtFunc, TFlatSpeedButtonUnit, TFlatButtonUnit, FR_DSet,
  FR_DBSet, FR_Class;

type
  TFrmBankPD = class(TForm)
    suiFrmBankPD: TsuiForm;
    g: TDBGridEh;
    sncDBCurrencyInplaceEdit: TsncDBCurrencyEdit;
    Panel1: TPanel;
    Label1: TLabel;
    sncCurrencyLabel3: TsncCurrencyLabel;
    sncCurrencyLabel4: TsncCurrencyLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Panel6: TPanel;
    DataSource1: TDataSource;
    Panel7: TPanel;
    Label2: TLabel;
    Panel8: TPanel;
    Panel9: TPanel;
    Label10: TLabel;
    Panel10: TPanel;
    editZD: TsuiEdit;
    Panel13: TPanel;
    editCWZG: TsuiEdit;
    Label13: TLabel;
    tq: TADOQuery;
    t: TADOTable;
    tbSave: TFlatButton;
    tbCalc: TFlatButton;
    tbAddRow: TFlatButton;
    tbInsertRow: TFlatButton;
    tbDeleteRow: TFlatButton;
    tbSwap: TFlatButton;
    Panel14: TPanel;
    Panel15: TPanel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label14: TLabel;
    Panel16: TPanel;
    Panel11: TPanel;
    btnBackMonth: TsuiButton;
    btnNextMonth: TsuiButton;
    Label11: TLabel;
    Panel12: TPanel;
    Label12: TLabel;
    Panel17: TPanel;
    Label15: TLabel;
    Panel18: TPanel;
    Label16: TLabel;
    Panel19: TPanel;
    procedure sncDBCurrencyInplaceEditEnter(Sender: TObject);
    procedure sncDBCurrencyInplaceEditExit(Sender: TObject);
    procedure sncDBCurrencyInplaceEditMoveOut(Sender: TObject;
      var Key: Word; Shift: TShiftState);
    procedure gColEnter(Sender: TObject);
    procedure gColExit(Sender: TObject);
    procedure gDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
    procedure gKeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure tbAddRowClick(Sender: TObject);
    procedure tbInsertRowClick(Sender: TObject);
    procedure tbDeleteRowClick(Sender: TObject);
    procedure tbSwapClick(Sender: TObject);
    procedure tbSaveClick(Sender: TObject);
    procedure tbCalcClick(Sender: TObject);
    procedure gColumns4EditButtonClick(Sender: TObject;
      var Handled: Boolean);
    procedure gExit(Sender: TObject);
    procedure btnBackMonthClick(Sender: TObject);
    procedure btnNextMonthClick(Sender: TObject);
    procedure gColumns7EditButtonClick(Sender: TObject;
      var Handled: Boolean);
    procedure gColumns5EditButtonClick(Sender: TObject;
      var Handled: Boolean);
    procedure tAfterScroll(DataSet: TDataSet);
  private
    { Private declarations }
  public
    Deleted,Edited,Added:Boolean;
    defaultSubject_id:integer;
    defaultCodeLongSubjectName:string;
    MaxDay:integer;
    IsGoon:Boolean;

    procedure SetHighLightColor;
    procedure SetNormalColor;
    function CheckCurrencyField(FieldName: String): Boolean;
    function CheckRowFull:Boolean;
    procedure EditChange;
    procedure GetMaxDay;
  end;

const
  CurrencyFieldSet: array[0..1] of string=('J_Money' , 'D_Money');

var
  FrmBankPD: TFrmBankPD;


implementation

uses PublicFunc, DataModule;

{$R *.dfm}
procedure TFrmBankPD.EditChange;
begin
  t.Edit;
  t.Post;
  tbSave.Enabled:=(t.RecordCount=1) or CheckRowFull;
  tbSwap.Enabled:=((t.FieldByName('J_Money').AsCurrency<>0) or (t.FieldByName('D_Money').AsCurrency<>0));
  tbDeleteRow.Enabled:=(t.RecordCount>0);
  tbAddRow.Enabled:=CheckRowFull;
  tbInsertRow.Enabled:=CheckRowFull;
end;

function TFrmBankPD.CheckRowFull:Boolean;
begin
  if (t.FieldByName('Day').AsInteger<1) or (t.FieldByName('Day').AsInteger>MaxDay) then
  begin
    Frm_MsgBox('系统信息','日期输入错误,应该在 1-'+IntToStr(MaxDay)+' 日之间,系统将自动更改,请重新检查并输入。',MsgBox_OK_ERROR);
    t.Edit;
    t.FieldByName('Day').AsInteger:=MaxDay;
    t.Post;
  end;

  if (t.FieldByName('J_Money').asCurrency<>0) and (t.FieldByName('D_Money').asCurrency<>0) then
  begin
    Frm_MsgBox('系统信息','一条收付记录不能借贷不能都有发生额,贷方金额自动清除,请重新检查并输入。',MsgBox_OK_ERROR);
    t.Edit;
    t.FieldByName('D_Money').AsCurrency:=0;
    t.Post;
  end;

  result:=((Trim(t.FieldByName('Day').AsString)<>'') and (Trim(t.FieldByName('Summary').AsString)<>'')
       and (Trim(t.FieldByName('CodeLongSubjectName').AsString)<>'')
       and ((t.FieldByName('EarningNumber').asInteger<>0) or (t.FieldByName('PayNumber').asInteger<>0))
       and (t.FieldByName('CheckType_id').asInteger<>0)
       and ((t.FieldByName('J_Money').asCurrency<>0) or (t.FieldByName('D_Money').asCurrency<>0)));
end;


function TFrmBankPD.CheckCurrencyField(FieldName: String): Boolean;
var
  I: Integer;
begin
  Result := False;
  for I:=0 to Length(CurrencyFieldSet)-1 do
  begin
    if (FieldName=CurrencyFieldSet[I]) then
    begin
      Result := True;
      Break;
    end;
  end;
end;

procedure TFrmBankPD.SetHighLightColor;
begin
  sncDBCurrencyInplaceEdit.Color := clMoneyGreen;
  sncDBCurrencyInplaceEdit.Font.Color := clWhite;
end;

procedure TFrmBankPD.SetNormalColor;
begin
  sncDBCurrencyInplaceEdit.Color := g.Color;
  sncDBCurrencyInplaceEdit.Font.Color := g.Font.Color;
end;

procedure TFrmBankPD.sncDBCurrencyInplaceEditEnter(Sender: TObject);
begin
  SetNormalColor;
  EditChange;
end;

procedure TFrmBankPD.sncDBCurrencyInplaceEditExit(Sender: TObject);
begin
  SetHighLightColor;
  EditChange;
end;

procedure TFrmBankPD.sncDBCurrencyInplaceEditMoveOut(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  case Key of
    VK_UP,VK_DOWN,VK_LEFT,VK_RIGHT:
      begin
        g.SetFocus;
        SendMessage(g.Handle, WM_KEYDOWN, WORD(Key), 0);
      end;
  end;
end;

procedure TFrmBankPD.gColEnter(Sender: TObject);
begin
  editZD.Text:=t.FieldByName('MakeOperator').AsString;
  if CheckCurrencyField(g.SelectedField.FieldName) then
  begin
    sncDBCurrencyInplaceEdit.DataField := g.SelectedField.FieldName;
    sncDBCurrencyInplaceEdit.Tag := 1;
  end;
end;

procedure TFrmBankPD.gColExit(Sender: TObject);
begin
  EditChange;
  if CheckCurrencyField(g.SelectedField.FieldName) then
  begin
    sncDBCurrencyInplaceEdit.Visible := false;
    sncDBCurrencyInplaceEdit.Tag := 0;
  end;
end;

procedure TFrmBankPD.gDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
var
  OldColor, OldFontColor: TColor;
begin
  if CheckCurrencyField(Column.FieldName) then
  begin
    if (gdFocused in State) then
    begin
      sncDBCurrencyInplaceEdit.Left := Rect.Left + g.Left+2;
      sncDBCurrencyInplaceEdit.Top := Rect.Top + g.top+2;
      sncDBCurrencyInplaceEdit.Width := Rect.Right-Rect.Left;
      sncDBCurrencyInplaceEdit.Height := Rect.Bottom- Rect.Top;
      SetHighLightColor;
      if (sncDBCurrencyInplaceEdit.Tag=1) and not sncDBCurrencyInplaceEdit.Visible then
        sncDBCurrencyInplaceEdit.Visible := True;
    end
    else
      begin
        OldColor := sncDBCurrencyInplaceEdit.Color;
        OldFontColor := sncDBCurrencyInplaceEdit.Font.Color;
        SetNormalColor;
        DrawCurrencyFrame(g.Canvas, Rect, sncDBCurrencyInplaceEdit, Column.Field.AsFloat);
        sncDBCurrencyInplaceEdit.Color := OldColor;
        sncDBCurrencyInplaceEdit.Font.Color := OldFontColor;
      end;
  end;
end;

procedure TFrmBankPD.gKeyPress(Sender: TObject; var Key: Char);
begin
  if (key<>chr(9)) and CheckCurrencyField(g.SelectedField.FieldName) then
    begin
      sncDBCurrencyInplaceEdit.SetFocus;
      SendMessage(sncDBCurrencyInplaceEdit.Handle, WM_Char, WORD(Key), 0);
    end;
end;

procedure TFrmBankPD.FormShow(Sender: TObject);
begin
  Label1.Caption:=IntToStr(DM.BankAccountYear)+'年';
  editCWZG.Text:=DM.FinanceManager;
  editZD.Text:=DM.UserName;
  btnBackMonth.Enabled:=not ((DM.BankAccountYear=DM.AccountStartYear) and (DM.BankAccountMonth=DM.AccountStartMonth));
  GetMaxDay;
  
  t.Connection:=DM.adoc;
  tq.Connection:=DM.adoc;

  Deleted:=false;
  Edited:=false;
  Added:=false;

  tq.Close;
  tq.SQL.Clear;
  tq.SQL.Add('select * into #TempBankCredence from V_BankCredence where [Year]='+IntToStr(DM.BankAccountYear)+' and [month]='+IntToStr(DM.BankAccountMonth));
  tq.ExecSQL;

  tq.Close;
  tq.SQL.Clear;
  tq.SQL.Add('select * into #TempSubject from V_Subject where IsHasSubSubject=0 and IsBank=1 and Used=1');
  tq.ExecSQL;
  tq.Close;
  tq.SQL.Clear;
  tq.SQL.Add('select top 1 * from #TempSubject order by id');
  tq.Open;
  if tq.RecordCount>0 then
  begin
    DefaultSubject_id:=tq.FieldByName('id').AsInteger;
    DefaultCodeLongSubjectName:=tq.FieldByName('CodeLongSubjectName').AsString;
  end
  else

⌨️ 快捷键说明

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