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

📄 chaxun.pas

📁 家庭收支管理
💻 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 + -