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

📄 unit3.pas

📁 家用理财软件beta版
💻 PAS
字号:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, RzListVw, StdCtrls, xpGroupBox, xpBitBtn, xpCombo,
  xpEdit, ExtCtrls, xpPanel, Menus, DB, ADODB, Mask, RzEdit;

type
  TForm3 = class(TForm)
    xpPanel1: TxpPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    xpEdit1: TxpEdit;
    xpEdit2: TxpEdit;
    xpBitBtn1: TxpBitBtn;
    xpBitBtn2: TxpBitBtn;
    xpComboBox1: TxpComboBox;
    xpGroupBox2: TxpGroupBox;
    xpBitBtn7: TxpBitBtn;
    xpBitBtn8: TxpBitBtn;
    xpPanel2: TxpPanel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    xpComboBox2: TxpComboBox;
    xpBitBtn3: TxpBitBtn;
    xpBitBtn4: TxpBitBtn;
    xpEdit7: TxpEdit;
    xpEdit8: TxpEdit;
    xpGroupBox1: TxpGroupBox;
    Label12: TLabel;
    Label13: TLabel;
    xpedit9: TxpEdit;
    xpEdit10: TxpEdit;
    xpBitBtn5: TxpBitBtn;
    xpEdit4: TxpEdit;
    xpEdit5: TxpEdit;
    xpGroupBox3: TxpGroupBox;
    PopupMenu1: TPopupMenu;
    M1: TMenuItem;
    payoutTable: TADOTable;
    RzListView1: TRzListView;
    RzMaskEdit1: TRzMaskEdit;
    incometable: TADOTable;
    RzMaskEdit2: TRzMaskEdit;
    xpEdit3: TxpEdit;
    xpEdit6: TxpEdit;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    xpEdit11: TxpEdit;
    dbusertable: TADOTable;
    procedure xpBitBtn5Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure xpedit9KeyPress(Sender: TObject; var Key: Char);
    procedure xpEdit10KeyPress(Sender: TObject; var Key: Char);
    procedure RzListView1SelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    procedure M1Click(Sender: TObject);
    procedure xpBitBtn4Click(Sender: TObject);
    procedure xpBitBtn3Click(Sender: TObject);
    procedure RzMaskEdit1KeyPress(Sender: TObject; var Key: Char);
    procedure xpEdit5KeyPress(Sender: TObject; var Key: Char);
    procedure xpEdit2KeyPress(Sender: TObject; var Key: Char);
    procedure xpBitBtn1Click(Sender: TObject);
    procedure xpBitBtn2Click(Sender: TObject);
    procedure xpBitBtn7Click(Sender: TObject);
    procedure xpBitBtn8Click(Sender: TObject);
    procedure dbusertableAfterPost(DataSet: TDataSet);
    procedure dbusertableAfterDelete(DataSet: TDataSet);
    procedure payoutTableAfterPost(DataSet: TDataSet);
    procedure incometableAfterPost(DataSet: TDataSet);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;
  listviewindex:integer;
  Listindex_m:integer;
  modify:boolean;
  list:array[1..100,1..2] of string;
  list_index:integer;
implementation

uses main, search;

{$R *.dfm}

procedure TForm3.xpBitBtn5Click(Sender: TObject);
begin
 if (xpedit9.Text='') then
 begin
    application.MessageBox('支出物品不能为空!','提示',mb_Ok);
    xpedit9.SetFocus;
    exit;
 end;
 if (xpedit10.Text='') then
 begin
    application.MessageBox('支出金额不能为空!','提示',mb_Ok);
    xpedit10.SetFocus;
    exit;
 end;
  if modify then
  begin
    rzlistview1.Items.Item[listindex_m].SubItems[0]:=xpedit9.text;
    rzlistview1.items.Item[listindex_m].SubItems[1]:=xpedit10.Text;
    listindex_m:=-1;
    modify:=false;
    xpedit9.Text:='';
    xpedit10.Text:='';
    xpedit9.SetFocus;
    exit;
  end;
 with rzlistview1.Items.Add do
 begin
    listviewindex:=listviewindex+1;
    caption:=inttostr(listviewindex);
    subitems.Add(xpedit9.Text);
    subitems.Add(xpedit10.Text);
    list[list_index][1]:=xpedit9.text;
    list[list_index][2]:=xpedit10.Text;
    list_index:=list_index+1;
 end;
 xpedit9.Text:='';
 xpedit10.Text:='';
 xpedit9.SetFocus;
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
modify:=false;
listindex_m:=-1;
listviewindex:=0;
list_index :=1;
end;

procedure TForm3.xpedit9KeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then
   xpedit10.SetFocus;
end;

procedure TForm3.xpEdit10KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
 xpbitbtn5.OnClick(self);
end;

procedure TForm3.RzListView1SelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
listindex_m:=item.Index;
end;

procedure TForm3.M1Click(Sender: TObject);
begin
 modify:=true;
 xpedit9.Text:=rzlistview1.Items.Item[listindex_m].SubItems[0];
 xpedit10.Text:=rzlistview1.Items.Item[listindex_m].SubItems[1];
end;

procedure TForm3.xpBitBtn4Click(Sender: TObject);
begin
  list_index:=1;
  xpedit4.Text:='';
  xpedit5.Text:='';
  rzmaskedit1.Text:='';
  xpedit7.Text:='';
  xpedit8.Text:='';
  xpedit9.Text:='';
  xpedit10.Text:='';
  xpcombobox2.ItemIndex:=0;
  rzlistview1.Clear;
  listviewindex:=-1
end;

procedure TForm3.xpBitBtn3Click(Sender: TObject);
var num,i:integer;
begin
  if xpedit4.Text='' then
  begin
    application.MessageBox('输入支出人不能为空','提示',mb_ok);
    exit;
  end;
  if xpedit5.Text='' then
  begin
    application.MessageBox('输入支出金额不能为空','提示',mb_ok);
    exit;
  end;
  if xpedit7.Text='' then
  begin
    application.MessageBox('输入支出地点不能为空','提示',mb_ok);
    exit;
  end;
  if xpedit8.Text='' then
  begin
    application.MessageBox('输入支出缘由不能为空','提示',mb_ok);
    exit;
  end;
  try
    strtodatetime(rzmaskedit1.Text)
  except
  on e:econverterror do
   begin
   application.MessageBox('输入时间格式不对','提示',mb_ok);
   rzmaskedit1.Text:='';
   rzmaskedit1.SetFocus;
   exit;
   end;
  end;
  try
   strtofloat(xpedit5.Text);
  except
  on e: econverterror do
    begin
    application.MessageBox('输入金额格式不对','提示',mb_ok);
    xpedit5.Text:='';
    xpedit5.SetFocus;
    exit;
    end;
  end;
  payouttable.Open;
  with payouttable do
  begin
     last;
     if bof then
     num:=0
     else
     num:=fieldvalues['payout_num'];
    //num:=num+1;
  if rzlistview1.Items.Count>0 then
  begin
     for i:=1 to rzlistview1.Items.Count do
     begin
       append;
       num:=num+1;
       Fieldvalues['payout_num']:=num;
       Fieldvalues['payout_name']:=xpedit4.Text;
       Fieldvalues['payout_money']:=strtofloat(xpedit5.Text);
       Fieldvalues['payout_date']:=strtodatetime(rzmaskedit1.Text);
       Fieldvalues['payout_address']:=xpedit7.Text;
       Fieldvalues['payout_reason']:=xpedit8.Text;
       Fieldvalues['payout_mode']:=xpcombobox2.Text;
       Fieldvalues['payout_single']:=list[i+1][1];
       Fieldvalues['payout_single_money']:=list[i+1][2];
       //str1:=rzlistview1.
       {j:=i; }
       {if rzlistview1.Items.Count<>0 then
       begin
       str1:=rzlistview1.Items.Item[i].SubItems.Strings[0];
//       SubItems[0];
       str2:=rzlistview1.Items.Item[i].SubItems[1];
       Fieldvalues['payout_single']:=str1;
       Fieldvalues['payout_single_money']:=str2;
       end; }
       Fieldvalues['payout_filldate']:=now;
       post;
     end;
  end
  else
  begin
       append;
       num:=num+1;
       Fieldvalues['payout_num']:=num;
       Fieldvalues['payout_name']:=xpedit4.Text;
       Fieldvalues['payout_money']:=strtofloat(xpedit5.Text);
       Fieldvalues['payout_date']:=strtodatetime(rzmaskedit1.Text);
       Fieldvalues['payout_address']:=xpedit7.Text;
       Fieldvalues['payout_reason']:=xpedit8.Text;
       Fieldvalues['payout_mode']:=xpcombobox2.Text;
       Fieldvalues['payout_filldate']:=now;
       post;
  end;
  end;
end;

procedure TForm3.RzMaskEdit1KeyPress(Sender: TObject; var Key: Char);
begin
 try
  if not (key in ['1','2','3','4','5','6','7','8','9','0',#8]) then
    key:=#0;
 except
  on e:edbediterror do
   rzmaskedit1.Text:='';
 end;
end;

procedure TForm3.xpEdit5KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['1','2','3','4','5','6','7','8','9','0','.',#8]) then
 key:=#0;
end;

procedure TForm3.xpEdit2KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['1','2','3','4','5','6','7','8','9','0','.',#8]) then
 key:=#0;
end;

procedure TForm3.xpBitBtn1Click(Sender: TObject);
var num:integer;
begin
  if xpedit1.Text='' then
  begin
    application.MessageBox('输入收入人不能为空','提示',mb_ok);
    exit;
  end;
  if xpedit2.Text='' then
  begin
    application.MessageBox('输入收入金额不能为空','提示',mb_ok);
    exit;
  end;
  if rzmaskedit2.Text='' then
  begin
    application.MessageBox('输入收入日期不能为空','提示',mb_ok);
    exit;
  end;
  try
    strtofloat(xpedit2.Text)
  except
   on E:EconvertError do
   begin
    application.MessageBox('输入金额格式不对','提示',mb_ok);
    xpedit2.Text:='';
    xpedit2.SetFocus;
    exit;
   end;
  end;
  try
    strtodatetime(rzmaskedit2.Text)
  except
   on E:EconvertError do
   begin
    application.MessageBox('输入日期格式不对','提示',mb_ok);
    rzmaskedit2.Text:='';
    rzmaskedit2.SetFocus;
    exit;
   end;
  end;
  incometable.open;
  with incometable do
  begin
    last;
    if bof then
    begin
     num:=0;
     edit;
    end
    else
    begin
      num:=Fieldvalues['income_num'];
      append;
    end;
    num:=num+1;
    fieldvalues['income_num']:=num;
    Fieldvalues['income_name']:=xpedit1.Text;
    Fieldvalues['income_money']:=strtofloat(xpedit2.Text);
    fieldvalues['income_date']:=strtodatetime(rzmaskedit2.Text);
    fieldvalues['income_source']:=xpcombobox1.Text;
    fieldvalues['income_filldate']:=now;
    post;
  end;
  xpedit1.Text:='';
  xpedit2.Text:='';
  rzmaskedit2.Text:='';
  xpcombobox1.ItemIndex:=0;
end;

procedure TForm3.xpBitBtn2Click(Sender: TObject);
begin
  xpedit1.Text:='';
  xpedit2.Text:='';
  rzmaskedit2.Text:='';
  xpcombobox1.ItemIndex:=0;
end;

procedure TForm3.xpBitBtn7Click(Sender: TObject);
var SearchOptions:TLocateOptions;
    searchresult:boolean;
begin
 SearchOptions:=[loCaseInsensitive];
 if (xpedit3.Text='') or (xpedit6.Text='') or (xpedit11.Text='') then
  begin
    application.MessageBox('请输入完整的信息!','提示',mb_ok);
    exit;
  end;
 if xpedit6.Text<>xpedit11.Text then
  begin
     xpedit6.Text:='';
     xpedit11.Text:='';
     xpedit6.SetFocus;
     exit;
  end;
  dbusertable.Open;
  searchresult:=dbusertable.Locate('username',xpedit3.Text,SearchOptions);
  if searchresult then
  begin
      application.MessageBox('用户已存在!','提示',MB_OK);
      XPedit3.Text:='';
      xpedit6.Text:='';
      xpedit11.Text:='';
      xpedit3.SetFocus;
      exit;
  end;
  with dbusertable do
  begin
  last;
  append;
  FieldValues['username']:=xpedit3.text;
  FieldValues['password']:=xpedit6.text;
  post;
  end;

end;

procedure TForm3.xpBitBtn8Click(Sender: TObject);
var SearchOptions:TLocateOptions;
    searchresult:boolean;
begin
 SearchOptions:=[loCaseInsensitive];
 if (xpedit3.Text='')  then
  begin
    application.MessageBox('请输入用户名!','提示',mb_ok);
    exit;
  end;
  dbusertable.Open;
  searchresult:=dbusertable.Locate('username',xpedit3.Text,SearchOptions);
  if not searchresult then
  begin
      application.MessageBox('用户不存在!','提示',MB_OK);
      XPedit3.Text:='';
      xpedit6.Text:='';
      xpedit11.Text:='';
      xpedit3.SetFocus;
      exit;
  end;
  with dbusertable do
  begin
   delete;
  end;
end;

procedure TForm3.dbusertableAfterPost(DataSet: TDataSet);
begin
  XPedit3.Text:='';
  xpedit6.Text:='';
  xpedit11.Text:='';
  xpedit3.SetFocus;
  application.MessageBox('用户添加成功!','提示',MB_ok);
  xpgroupbox2.Visible:=false;
  xpgroupbox3.Visible:=true;
  dbusertable.Close;
end;

procedure TForm3.dbusertableAfterDelete(DataSet: TDataSet);
begin
  XPedit3.Text:='';
  xpedit6.Text:='';
  xpedit11.Text:='';
  xpedit3.SetFocus;
  application.MessageBox('用户删除成功!','提示',MB_ok);
  xpgroupbox2.Visible:=false;
  xpgroupbox3.Visible:=true;
  dbusertable.Close;
end;

procedure TForm3.payoutTableAfterPost(DataSet: TDataSet);
var i:integer;
begin
 application.MessageBox('支出信息保存成功!','提示',mb_ok);
 for i:=1 to 100 do
 begin
  list[i][1]:='';
  list[i][2]:='';
 end;
  payouttable.Close;
  list_index:=1;
  xpedit4.Text:='';
  xpedit5.Text:='';
  rzmaskedit1.Text:='';
  xpedit7.Text:='';
  xpedit8.Text:='';
  xpedit9.Text:='';
  xpedit10.Text:='';
  xpcombobox2.ItemIndex:=0;
  rzlistview1.Clear;
  listviewindex:=-1
end;

procedure TForm3.incometableAfterPost(DataSet: TDataSet);
begin
  application.MessageBox('收入信息保存成功!','提示',mb_ok);
  incometable.Close;
  xpedit1.Text:='';
  xpedit2.Text:='';
  rzmaskedit2.Text:='';
  xpcombobox1.ItemIndex:=0;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -