📄 jizhang.pas
字号:
unit jizhang;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, GridsEh, DBGridEh, ComCtrls, DBCtrlsEh, Mask, ExtCtrls,
jpeg;
type
TJizhangForm = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label7: TLabel;
Button1: TButton;
Label6: TLabel;
Button2: TButton;
Button3: TButton;
GroupBox2: TGroupBox;
dt_date: TDBDateTimeEditEh;
DBGridEh: TDBGridEh;
edt_number: TDBNumberEditEh;
edt_note: TDBEditEh;
edt_account: TDBEditEh;
edt_szcode: TDBEditEh;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
tvw_account: TTreeView;
tvw_szcode: TTreeView;
edt_aaccount: TDBEditEh;
TabSheet3: TTabSheet;
tvw_aaccount: TTreeView;
Button4: TButton;
TabSheet4: TTabSheet;
Image: TImage;
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure edt_accountEnter(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure edt_szcodeChange(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button3Click(Sender: TObject);
procedure dt_dateEnter(Sender: TObject);
procedure edt_numberEnter(Sender: TObject);
procedure WMNCHitTest(var Msg:TMessage);message WM_NCHITTEST;
procedure tvw_accountClick(Sender: TObject);
procedure tvw_szcodeClick(Sender: TObject);
procedure tvw_aaccountClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure JiZhangStart;
end;
var
JizhangForm: TJizhangForm;
implementation
{$R *.dfm}
uses DataModule;
procedure TJizhangForm.WMNCHitTest(var Msg:TMessage);
begin
inherited;
Msg.Result:=HTCLIENT;
end;
procedure TJizhangForm.JiZhangStart;
begin
DataForm.ABSQuery1.SQL.Clear;
DataForm.ABSQuery1.SQL.Add('insert into szData (select * from lrk)');
DataForm.ABSQuery1.ExecSQL;
DataForm.ABSQuery1.SQL.Clear;
DataForm.ABSQuery1.SQL.Add('update zhanghu set Present=Present+:cs1 where Account=:cs2');
DataForm.tbl_Lrk.DisableControls;
DataForm.tbl_Lrk.First;
while not DataForm.tbl_Lrk.Eof do
begin
DataForm.ABSQuery1.ParamByName('cs1').AsFloat:=DataForm.tbl_Lrk.FieldByName('income').AsFloat-DataForm.tbl_Lrk.FieldByName('Payout').AsFloat;
DataForm.ABSQuery1.ParamByName('cs2').AsString:=DataForm.tbl_Lrk.FieldByName('Account').AsString;
DataForm.ABSQuery1.ExecSQL;
DataForm.tbl_Lrk.Next;
end;
DataForm.ABSQuery1.SQL.Clear;
DataForm.ABSQuery1.SQL.Add('delete from lrk');
DataForm.ABSQuery1.ExecSQL;
DataForm.tbl_Lrk.EnableControls;
DataForm.tbl_Lrk.Refresh;
if DataForm.tbl_Account.Active then
begin
DataForm.tbl_Account.Close;
DataForm.tbl_Account.Open;
end;
end;
procedure TJizhangForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then
begin
Key:=#0;
Perform(CM_DialogKey,VK_TAB,0);
end;
end;
procedure TJizhangForm.edt_accountEnter(Sender: TObject);
begin
PageControl1.ActivePageIndex:=(Sender as TDBEditEh).Tag;
end;
procedure TJizhangForm.FormCreate(Sender: TObject);
var
Root0,Root1,Child:TTreeNode;
i,bj:integer;
fn:string;
begin
if FileExists('Treeview.jpg') then Image.Picture.LoadFromFile('Treeview.jpg');
tvw_Account.Items.Clear;
Root0:=tvw_Account.Items.AddFirst(nil,'可选择账户列表');
Root0.ImageIndex:=0;
Root0.SelectedIndex:=0;
bj:=-1;
DataForm.ABSQuery1.SQL.Clear;
DataForm.ABSQuery1.SQL.Add('select AccountType,Account,AccountName,Apply from zhanghu order by AccountType,Account');
DataForm.ABSQuery1.Open;
DataForm.ABSQuery1.First;
while not DataForm.ABSQuery1.Eof do
begin
i:=DataForm.ABSQuery1.FieldByName('AccountType').AsInteger;
fn:='('+DataForm.ABSQuery1.FieldByName('Account').AsString+')'+DataForm.ABSQuery1.FieldByName('AccountName').AsString;
if DataForm.ABSQuery1.FieldByName('Apply').AsBoolean then
begin
if i<>bj then
begin
bj:=i;
case i of
0:Root1:=tvw_Account.Items.AddChild(Root0,'现金类');
1:Root1:=tvw_Account.Items.AddChild(Root0,'存款类');
2:Root1:=tvw_Account.Items.AddChild(Root0,'投资类');
3:Root1:=tvw_Account.Items.AddChild(Root0,'贷款类');
4:Root1:=tvw_Account.Items.AddChild(Root0,'其他类');
//0:Root1:=tvw_Account.Items.Add(nil,'现金类');
//1:Root1:=tvw_Account.Items.Add(nil,'存款类');
//2:Root1:=tvw_Account.Items.Add(nil,'投资类');
//3:Root1:=tvw_Account.Items.Add(nil,'其他类');
end;
Root1.ImageIndex:=1;
Root1.SelectedIndex:=1;
end;
Child:=tvw_Account.Items.AddChild(Root1,fn);
Child.ImageIndex:=2;
Child.SelectedIndex:=3;
end;
DataForm.ABSQuery1.Next;
end;
tvw_Account.FullExpand;
tvw_Account.Selected:=tvw_Account.Items.GetFirstNode;
tvw_szcode.Items.Clear;
Root0:=tvw_szcode.Items.AddFirst(nil,'可选择交易类别列表');
Root0.ImageIndex:=0;
Root0.SelectedIndex:=0;
bj:=-1;
DataForm.ABSQuery1.SQL.Clear;
DataForm.ABSQuery1.SQL.Add('select szType,szCode,szName from szType order by szType,szCode');
DataForm.ABSQuery1.Open;
DataForm.ABSQuery1.First;
while not DataForm.ABSQuery1.Eof do
begin
i:=DataForm.ABSQuery1.FieldByName('szType').AsInteger;
fn:='('+DataForm.ABSQuery1.FieldByName('szCode').AsString+')'+DataForm.ABSQuery1.FieldByName('szName').AsString;
if i<>bj then
begin
bj:=i;
case i of
0:Root1:=tvw_szcode.Items.AddChild(Root0,'内部核算');
1:Root1:=tvw_szcode.Items.AddChild(Root0,'收入分类');
2:Root1:=tvw_szcode.Items.AddChild(Root0,'食品支出');
3:Root1:=tvw_szcode.Items.AddChild(Root0,'用品支出');
4:Root1:=tvw_szcode.Items.AddChild(Root0,'费用支出');
9:Root1:=tvw_szcode.Items.AddChild(Root0,'其他支出');
end;
Root1.ImageIndex:=1;
Root1.SelectedIndex:=1;
end;
Child:=tvw_szcode.Items.AddChild(Root1,fn);
Child.ImageIndex:=2;
Child.SelectedIndex:=3;
DataForm.ABSQuery1.Next;
end;
tvw_szcode.FullExpand;
tvw_szcode.Selected:=tvw_szcode.Items.GetFirstNode;
tvw_aaccount.Items.Assign(tvw_account.Items);
tvw_aaccount.FullExpand;
tvw_Aaccount.Selected:=tvw_Aaccount.Items.GetFirstNode;
dt_date.Value:=date;
DataForm.DataSource.DataSet:=DataForm.tbl_Lrk;
DBGridEh.DataSource:=DataForm.DataSource;
DataForm.tbl_Lrk.Open;
DataForm.tbl_WorkNo.Open;
end;
procedure TJizhangForm.Button1Click(Sender: TObject);
var rcn:longint;
begin
if (edt_account.Text='') or (edt_szcode.Text='') or (edt_number.Value=0) or (edt_number.Text='') or (edt_aaccount.Enabled and (edt_aaccount.Text='')) then
begin
application.MessageBox('当前录入数据不完整,不能保存!','提示信息',MB_OK+MB_ICONERROR);
exit;
end;
//读取日志号
rcn:=DataForm.tbl_WorkNo.FieldByName('RecNo').AsInteger;
DataForm.tbl_WorkNo.Edit;
DataForm.tbl_WorkNo.FieldByName('RecNo').AsInteger:=rcn+1;
DataForm.tbl_WorkNo.CheckBrowseMode;
//保存数据
if copy(edt_szCode.Text,2,6)='000000' then //内部转账
begin
DataForm.tbl_Lrk.Append;
DataForm.tbl_Lrk.FieldByName('RecNo').AsInteger:=rcn;
DataForm.tbl_Lrk.FieldByName('szDate').AsVariant:=dt_date.Text;
DataForm.tbl_Lrk.FieldByName('Account').AsString:=copy(edt_account.Text,2,10);
DataForm.tbl_Lrk.FieldByName('szCode').AsString:=copy(edt_szCode.Text,2,6);
DataForm.tbl_Lrk.FieldByName('income').AsFloat:=0;
DataForm.tbl_Lrk.FieldByName('payout').AsFloat:=edt_number.Value;
DataForm.tbl_Lrk.FieldByName('Aaccount').AsString:=copy(edt_aaccount.Text,2,10);
DataForm.tbl_Lrk.FieldByName('Note').AsString:=edt_note.Text;
DataForm.tbl_Lrk.CheckBrowseMode;
DataForm.tbl_Lrk.Append;
DataForm.tbl_Lrk.FieldByName('RecNo').AsInteger:=rcn;
DataForm.tbl_Lrk.FieldByName('szDate').AsVariant:=dt_date.Text;
DataForm.tbl_Lrk.FieldByName('Account').AsString:=copy(edt_aaccount.Text,2,10);
DataForm.tbl_Lrk.FieldByName('szCode').AsString:=copy(edt_szCode.Text,2,6);
DataForm.tbl_Lrk.FieldByName('income').AsFloat:=edt_number.Value;
DataForm.tbl_Lrk.FieldByName('payout').AsFloat:=0;
DataForm.tbl_Lrk.FieldByName('Aaccount').AsString:=copy(edt_account.Text,2,10);
DataForm.tbl_Lrk.FieldByName('Note').AsString:=edt_note.Text;
DataForm.tbl_Lrk.CheckBrowseMode;
end else begin //非内部转账
DataForm.tbl_Lrk.Append;
DataForm.tbl_Lrk.FieldByName('RecNo').AsInteger:=rcn;
DataForm.tbl_Lrk.FieldByName('szDate').AsVariant:=dt_date.Text;
DataForm.tbl_Lrk.FieldByName('Account').AsString:=copy(edt_account.Text,2,10);
DataForm.tbl_Lrk.FieldByName('szCode').AsString:=copy(edt_szCode.Text,2,6);
if copy(edt_szCode.Text,2,3)='001' then begin //收入
DataForm.tbl_Lrk.FieldByName('income').AsFloat:=edt_number.Value;
DataForm.tbl_Lrk.FieldByName('payout').AsFloat:=0;
end else begin //支出
DataForm.tbl_Lrk.FieldByName('income').AsFloat:=0;
DataForm.tbl_Lrk.FieldByName('payout').AsFloat:=edt_number.Value;
end;
DataForm.tbl_Lrk.FieldByName('Note').AsString:=edt_note.Text;
DataForm.tbl_Lrk.CheckBrowseMode;
end;
edt_account.Text:='';
edt_szcode.Text:='';
edt_number.Text:='';
edt_aaccount.Text:='';
edt_aaccount.Enabled:=false;
edt_aaccount.Color:=clbtnface;
edt_note.Text:='';
edt_account.SetFocus;
end;
procedure TJizhangForm.edt_szcodeChange(Sender: TObject);
begin
if copy(edt_szCode.Text,2,6)='000000' then begin
edt_aaccount.Enabled:=true;
edt_aaccount.Color:=clwindow;
end else begin
edt_aaccount.Enabled:=false;
edt_aaccount.Color:=clbtnface;
end;
end;
procedure TJizhangForm.Button2Click(Sender: TObject);
begin
if application.MessageBox(pchar('您确定要删除日志号为 [ '+DataForm.tbl_Lrk.FieldByName('RecNo').AsString+' ] 的收支数据吗?'),'提示信息',MB_OKCANCEL+MB_ICONQUESTION)=ID_CANCEL then exit;
DBGridEh.SumList.Active:=False;
DataForm.tbl_Lrk.DisableControls;
DataForm.ABSQuery1.SQL.Clear;
DataForm.ABSQuery1.SQL.Add('delete from lrk where RecNo=:cs');
DataForm.ABSQuery1.ParamByName('cs').AsInteger:=DataForm.tbl_Lrk.FieldByName('RecNo').AsInteger;
DataForm.ABSQuery1.ExecSQL;
DataForm.tbl_Lrk.EnableControls;
DataForm.tbl_Lrk.Refresh;
DBGridEh.SumList.Active:=True;
end;
procedure TJizhangForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if DataForm.tbl_Lrk.RecordCount>0 then
if application.MessageBox('存在已录入但没有记账的数据,您是否在退出前批量记账?','提示信息',MB_YESNO+MB_ICONQUESTION)=ID_YES then JiZhangStart;
DataForm.tbl_Lrk.Close;
DataForm.tbl_WorkNo.Close;
DataForm.DataSource.DataSet:=nil;
DBGridEh.DataSource:=nil;
Action:=CaFree;
end;
procedure TJizhangForm.Button3Click(Sender: TObject);
begin
if application.MessageBox('即将开始批量记账,您确定吗?','提示信息',MB_OKCANCEL+MB_ICONQUESTION)=ID_CANCEL then exit;
JiZhangStart;
DBGridEh.SumList.RecalcAll;
application.MessageBox('收支数据已成功记入历史库!','提示信息',MB_OK+MB_ICONINFORMATION);
end;
procedure TJizhangForm.dt_dateEnter(Sender: TObject);
begin
PageControl1.ActivePageIndex:=3;
end;
procedure TJizhangForm.edt_numberEnter(Sender: TObject);
begin
PageControl1.ActivePageIndex:=3;
end;
procedure TJizhangForm.tvw_accountClick(Sender: TObject);
begin
with tvw_Account do
if Selected.Level=2 then
edt_Account.Text:=Selected.Text
else
edt_Account.Text:='';
end;
procedure TJizhangForm.tvw_szcodeClick(Sender: TObject);
begin
with tvw_szcode do
if Selected.Level=2 then
edt_szcode.Text:=Selected.Text
else
edt_szcode.Text:='';
end;
procedure TJizhangForm.tvw_aaccountClick(Sender: TObject);
begin
with tvw_aaccount do
if Selected.Level=2 then
edt_Aaccount.Text:=Selected.Text
else
edt_Aaccount.Text:='';
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -