📄 pzlr.pas
字号:
unit pzlr;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, ExtCtrls, Buttons, ComCtrls;
type
TForm2 = class(TForm)
Panel1: TPanel;
a: TStringGrid;
Memo2: TMemo;
Memo1: TMemo;
Edit1: TEdit;
Edit2: TEdit;
Label2: TLabel;
Label3: TLabel;
Shape1: TShape;
Label4: TLabel;
Label6: TLabel;
Edit4: TEdit;
Panel2: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
Panel3: TPanel;
Label7: TLabel;
Label9: TLabel;
Label8: TLabel;
Label10: TLabel;
BitBtn4: TBitBtn;
DateTimePicker1: TDateTimePicker;
BitBtn5: TBitBtn;
Shape2: TShape;
Panel4: TPanel;
Label1: TLabel;
Label5: TLabel;
Edit3: TEdit;
procedure FormShow(Sender: TObject);
procedure Edit4KeyPress(Sender: TObject; var Key: Char);
procedure aSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
Function DPJD: Boolean;// 判断同一摘要借方金额和贷方金额是否都存在
procedure aKeyPress(Sender: TObject; var Key: Char);
procedure BitBtn1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn1Click(Sender: TObject);
procedure aKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure aSetEditText(Sender: TObject; ACol, ARow: Integer;
const Value: String);
procedure Edit3KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BitBtn3Click(Sender: TObject);
private
{ Private declarations }
public
Function JIsNull: Boolean;overload; //判断当前行借方金额是否为空
Function JIsNull(Row: Integer): Boolean;overload ;//判断指定行借方金额是否为空
Function DIsCz(Zy: String): Boolean;//判断贷方是否有对应的贷方数据
Function JIsCz(Zy: String): Boolean;//判断借方是否有对应的借方数据
Function DIsNull: Boolean; overload;// 判断贷方金额当前是否为空
Function DIsNull(Row: integer): Boolean; Overload;
Function JCXmlb: Boolean;
Function JCZYKJ: Boolean; //检查输入的摘要或会计科目是否合法
Procedure ClearCurrent;
Procedure ClearEnd;
Function JSJJe(Row: Integer): real;//计算指定行借方金额
Function JsDJe(Row: Integer): Real;// 计算指定行贷方金额
Function GroupzyJJ(zy: String): real;//统计指定摘要的借方金额
Function GroupzyDJ(zy: String):real;// //统计指定摘要的贷方金额
Function JDisPH: Boolean; //判断摘要借方金额与贷方金额是否平衡
Function JSJFje(Row: Integer): Real;//记录指定行借方金额
Function JSDFje(Row: Integer): Real;//记录指定行贷方金额
{ Public declarations }
end;
var
Form2: TForm2;
x: Integer = 1;
y : Integer = 0;
a1: double = 0.0 ;
a2: double = 0.0;
implementation
uses DataModal4;
{$R *.dfm}
procedure TForm2.FormShow(Sender: TObject);
begin
a.Cells[3,0]:= '百';
a.Cells[4,0]:='十';
a.Cells[5,0]:='亿';
a.Cells[6,0]:='千';
a.Cells[7,0]:='百';
a.Cells[8,0]:='十';
a.Cells[9,0]:='万';
a.Cells[10,0]:='千';
a.Cells[11,0]:='百';
a.Cells[12,0]:='十';
a.Cells[13,0]:='元';
a.Cells[14,0]:='角';
a.Cells[15,0]:='分';
a.Cells[17,0]:= '百';
a.Cells[18,0]:='十';
a.Cells[19,0]:='亿';
a.Cells[20,0]:='千';
a.Cells[21,0]:='百';
a.Cells[22,0]:='十';
a.Cells[23,0]:='万';
a.Cells[24,0]:='千';
a.Cells[25,0]:='百';
a.Cells[26,0]:='十';
a.Cells[27,0]:='元';
a.Cells[28,0]:='角';
a.Cells[29,0]:='分';
DateTimePicker1.Date := Now();
end;
procedure TForm2.Edit4KeyPress(Sender: TObject; var Key: Char);
var
mm: Boolean;
begin
mm := (Key<#8)or(Key>#8)and(Key<#48)or(Key>#57);
if mm then
Key := #0;
end;
procedure TForm2.aSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
begin
x := ARow;
y := ACol;
end;
procedure TForm2.aKeyPress(Sender: TObject; var Key: Char);
var
aa: Boolean;
i: Integer;
begin
if y >15 then
For i :=2 to 15 do
begin
if Trim(a.Cells[i,x])<>'' then
Key := #0;
end;
if (y >1)and(y<16) then
For i :=17 to 29 do
begin
if Trim(a.Cells[i,x])<>'' then
Key := #0;
end;
if (y = 2)or(y= 16) then
if Key <> #45 then
Key := #0;
if (y>2)and(y<>16)then
begin
aa := (Key<#8)or(Key>#8)and(Key<#48)or(Key>#57);
if aa then
Key := #0;
if (a.Cells[y,x]<>'')and(Key<>#8) then
Key := #0;
end;
end;
procedure TForm2.BitBtn1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
TBitBtn(Sender).Font.Color := clRed;
end;
procedure TForm2.BitBtn1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
TBitBtn(Sender).Font.Color := clBlue;
end;
procedure TForm2.BitBtn1Click(Sender: TObject);
var
s,m: String;
i: integer;
begin
s:= 'P'+ FormatDateTime('yyyy',Now());
With Da.ADOQuery2 do
begin
Close;
SQL.Clear;
SQL.Add('select max(凭证号) as ss From 凭证表 ');
Open;
end;
If Da.ADOQuery2.FieldByName('ss').Value = null then
s := s + '001'
else
begin
m:= Trim(Da.ADOQuery2.FieldByName('ss').Value) ;
i:= StrToInt(Trim(Copy(m,6,8))) ;
if i<9 then
s:= s + '00'+ InttoStr(i +1)
else if i<99 then
s:= s + '0'+ InttoStr(i +1)
else
s:= s +InttoStr(i +1);
end;
Label3.Caption := s;
Edit3.SetFocus;
end;
procedure TForm2.aKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
mm,nn: Integer;
begin
if Key = VK_Delete then
if Application.MessageBox('确实要删除当前行数据吗?','提示',MB_YesNo)= ID_Yes then
begin
if a.RowCount>2 then
begin
ClearCurrent;
if x<>a.RowCount-1 then
begin
For mm := x +1 to a.RowCount-1 do
For nn := 0 to a.ColCount-1 do
a.Cells[nn,mm-1] := a.Cells[nn,mm];
end;
ClearEnd;
a.RowCount := a.RowCount-1;
end
else if a.RowCount = 2 then
ClearCurrent;
Label8.Caption := '';
Label10.Caption := '';
end;
if Key = VK_Next then
if (x = a.RowCount-1)and(Trim(a.Cells[0,x])<>'')and(Trim(a.Cells[1,x])<>'')and((JIsNull = False)or(DIsNull = False)) then
begin
a.RowCount := a.RowCount +1;
a.Cells[0,x+1]:= a.Cells[0,x];
end;
if Key = VK_ReTurn then
begin
if (y = 0)and(Trim(a.Cells[y,x])<>'') then
begin
with Da.ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from 摘要表 where 摘要编号 = :a or 摘要名称 = :b');
Parameters.ParamByName('a').Value := Trim(a.Cells[y,x]);
Parameters.ParamByName('b').Value := Trim(a.Cells[y,x]);
Open;
if Da.ADOQuery1.RecordCount>0 then
begin
a.Cells[y,x]:= Da.ADOQuery1.FieldByName('摘要名称').Value;
a.Col := 1;
end
else
begin
Application.MessageBox('该摘要不存在,请重新输入。','提示',64);
a.Cells[y,x]:='';
end;
end;
end
else if (y = 1)and(Trim(a.Cells[y,x])<>'') then
begin
With Da.ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from 会计科目表 where 科目编号 = :a or 科目名称 = :b');
Parameters.ParamByName('a').Value := Trim(a.Cells[y,x]);
Parameters.ParamByName('b').Value := Trim(a.Cells[y,x]);
Open;
if Da.ADOQuery1.RecordCount>0 then
begin
a.Cells[y,x]:= Da.ADOQuery1.FieldByName('科目名称').Value;
a.Col := 2;
end
else
begin
Application.MessageBox('该摘要不存在,请重新输入。','提示',64);
a.Cells[y,x]:='';
end;
end;
end
else if (y<>0)and(Y<>1)then
begin
if a.Col < a.ColCount-1 then
a.Col := a.Col +1;
end;
end;
end;
Function TForm2.JIsNull: Boolean;
var
i: Integer;
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -