📄 chaxun.pas
字号:
unit chaxun;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, GridsEh, DBGridEh, DBCtrlsEh, Mask, ComCtrls, ExtCtrls,
jpeg;
type
TChaXunForm = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
tvw_account: TTreeView;
TabSheet2: TTabSheet;
tvw_szcode: TTreeView;
cbx_date: TDBCheckBoxEh;
cbx_account: TDBCheckBoxEh;
cbx_code: TDBCheckBoxEh;
cbx_note: TDBCheckBoxEh;
edt_date: TDBDateTimeEditEh;
edt_account: TDBEditEh;
edt_code: TDBEditEh;
edt_note: TDBEditEh;
DBGridEh: TDBGridEh;
TabSheet3: TTabSheet;
Image: TImage;
cbx_Hide: TDBCheckBoxEh;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure cbx_dateClick(Sender: TObject);
procedure cbx_accountClick(Sender: TObject);
procedure cbx_codeClick(Sender: TObject);
procedure cbx_noteClick(Sender: TObject);
procedure edt_accountEnter(Sender: TObject);
procedure edt_dateEnter(Sender: TObject);
procedure WMNCHitTest(var Msg:TMessage);message WM_NCHITTEST;
procedure tvw_accountClick(Sender: TObject);
procedure tvw_szcodeClick(Sender: TObject);
procedure cbx_HideClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
ChaXunForm: TChaXunForm;
implementation
{$R *.dfm}
uses DataModule;
procedure TChaXunForm.WMNCHitTest(var Msg:TMessage);
begin
inherited;
Msg.Result:=HTCLIENT;
end;
procedure TChaXunForm.Button1Click(Sender: TObject);
var
shouci:Boolean;
begin
shouci:=false;
DataForm.RecordQuery.SQL.Clear;
DataForm.RecordQuery.SQL.Add('select * from szData');
if cbx_date.Checked then
begin
if shouci then
DataForm.RecordQuery.SQL.Add(' and szDate=:cs1')
else
DataForm.RecordQuery.SQL.Add(' where szDate=:cs1');
DataForm.RecordQuery.ParamByName('cs1').AsString:=edt_date.Text;
shouci:=true;
end;
if cbx_account.Checked then
begin
if shouci then
DataForm.RecordQuery.SQL.Add(' and Account=:cs2')
else
DataForm.RecordQuery.SQL.Add(' where Account=:cs2');
DataForm.RecordQuery.ParamByName('cs2').AsString:=copy(edt_account.Text,2,10);
shouci:=true;
end;
if cbx_code.Checked then
begin
if shouci then
DataForm.RecordQuery.SQL.Add(' and szCode=:cs3')
else
DataForm.RecordQuery.SQL.Add(' where szCode=:cs3');
DataForm.RecordQuery.ParamByName('cs3').AsString:=copy(edt_code.Text,2,6);
shouci:=true;
end;
if cbx_note.Checked then
begin
if shouci then
DataForm.RecordQuery.SQL.Add(' and POSITION(:cs4,note)>0')
else
DataForm.RecordQuery.SQL.Add(' where POSITION(:cs4,note)>0');
DataForm.RecordQuery.ParamByName('cs4').AsString:=trim(edt_note.Text);
shouci:=true;
end;
DataForm.RecordQuery.SQL.Add(' order by szdate');
DataForm.RecordQuery.Open;
cbx_Hide.Enabled:=DataForm.RecordQuery.RecordCount>0;
end;
procedure TChaXunForm.Button3Click(Sender: TObject);
begin
close
end;
procedure TChaXunForm.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 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 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,'其他类');
end;
Root1.ImageIndex:=1;
Root1.SelectedIndex:=1;
end;
Child:=tvw_Account.Items.AddChild(Root1,fn);
Child.ImageIndex:=2;
Child.SelectedIndex:=3;
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;
edt_date.Value:=date;
DataForm.RecordQuery.SQL.Clear;
DataForm.DataSource.DataSet:=DataForm.RecordQuery;
DBGridEh.DataSource:=DataForm.DataSource;
end;
procedure TChaXunForm.Button2Click(Sender: TObject);
begin
if (DataForm.RecordQuery.RecordCount=0) or (application.MessageBox('您确定要删除当前的交易记录吗?','提示信息',mb_yesno+MB_ICONQUESTION)=idno) then exit;
DataForm.ABSQuery2.SQL.Clear;
DataForm.ABSQuery2.SQL.Add('update zhanghu set present=present+:cs1 where account=:cs2');
DataForm.ABSQuery1.SQL.Clear;
DataForm.ABSQuery1.SQL.Add('select RecNo,Account,income,payout from szData where recno=:cs');
DataForm.ABSQuery1.ParamByName('cs').AsInteger:=DataForm.RecordQuery.FieldByName('recno').AsInteger;
DataForm.ABSQuery1.Open;
DataForm.ABSQuery1.First;
while not DataForm.ABSQuery1.Eof do
begin
DataForm.ABSQuery2.ParamByName('cs1').AsFloat:=DataForm.ABSQuery1.FieldByName('payout').AsFloat-DataForm.ABSQuery1.FieldByName('income').AsFloat;
DataForm.ABSQuery2.ParamByName('cs2').AsString:=DataForm.ABSQuery1.FieldByName('account').AsString;
DataForm.ABSQuery2.ExecSQL;
DataForm.ABSQuery1.Next;
end;
DataForm.ABSQuery1.Close;
DataForm.ABSQuery1.SQL.Clear;
DataForm.ABSQuery1.SQL.Add('delete from szData where recno=:cs');
DataForm.ABSQuery1.ParamByName('cs').AsInteger:=DataForm.RecordQuery.FieldByName('recno').AsInteger;
DataForm.ABSQuery1.ExecSQL;
DataForm.RecordQuery.Refresh;
if DataForm.tbl_Account.Active then
begin
DataForm.tbl_Account.Close;
DataForm.tbl_Account.Open;
end;
end;
procedure TChaXunForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DataForm.DataSource.DataSet:=nil;
DBGridEh.DataSource:=nil;
Action:=CaFree;
end;
procedure TChaXunForm.cbx_dateClick(Sender: TObject);
begin
if cbx_date.Checked then edt_date.Enabled:=true else edt_date.Enabled:=false;
end;
procedure TChaXunForm.cbx_accountClick(Sender: TObject);
begin
if cbx_account.Checked then
begin
edt_account.Enabled:=true;
tvw_Account.Enabled:=true;
end else begin
edt_account.Enabled:=false;
tvw_Account.Enabled:=false;
PageControl1.ActivePageIndex:=2
end;
end;
procedure TChaXunForm.cbx_codeClick(Sender: TObject);
begin
if cbx_code.Checked then
begin
edt_code.Enabled:=true;
tvw_szcode.Enabled:=True;
end else begin
edt_code.Enabled:=false;
tvw_szcode.Enabled:=false;
PageControl1.ActivePageIndex:=2
end;
end;
procedure TChaXunForm.cbx_noteClick(Sender: TObject);
begin
if cbx_note.Checked then edt_note.Enabled:=true else edt_note.Enabled:=false;
end;
procedure TChaXunForm.edt_accountEnter(Sender: TObject);
begin
PageControl1.ActivePageIndex:=(Sender as TDBEditEh).Tag;
end;
procedure TChaXunForm.edt_dateEnter(Sender: TObject);
begin
PageControl1.ActivePageIndex:=2
end;
procedure TChaXunForm.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 TChaXunForm.tvw_szcodeClick(Sender: TObject);
begin
with tvw_szcode do
if Selected.Level=2 then
edt_code.Text:=Selected.Text
else
edt_code.Text:='';
end;
procedure TChaXunForm.cbx_HideClick(Sender: TObject);
begin
DataForm.RecordQuery.Filtered:=true;
if cbx_Hide.Checked then
DataForm.RecordQuery.Filter:='szCode<>''000000'''
else
DataForm.RecordQuery.Filter:='';
DBGridEh.Refresh;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -