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