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

📄 lbwh.pas

📁 家庭收支管理
💻 PAS
字号:
unit lbwh;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, GridsEh, DBGridEh, DBCtrlsEh, Mask, ExtCtrls;

type
  TLbwhForm = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    btnNew: TButton;
    btnDelete: TButton;
    btnModify: TButton;
    btnExit: TButton;
    Label3: TLabel;
    DBGridEh: TDBGridEh;
    cmb_sztype: TDBComboBoxEh;
    edt_szcode: TDBEditEh;
    edt_szname: TDBEditEh;
    Bevel1: TBevel;
    Label4: TLabel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    procedure btnNewClick(Sender: TObject);
    procedure btnDeleteClick(Sender: TObject);
    procedure btnModifyClick(Sender: TObject);
    procedure btnExitClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure WMNCHitTest(var Msg:TMessage);message WM_NCHITTEST;
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure cmb_sztypeChange(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure DataChanged(DataSet: TDataSet);
  end;

var
  LbwhForm: TLbwhForm;

implementation

{$R *.dfm}

uses DataModule;

procedure TLbwhForm.WMNCHitTest(var Msg:TMessage);
begin
  inherited;
  Msg.Result:=HTCLIENT;
end;

procedure TLbwhForm.DataChanged(DataSet: TDataSet);
begin
  cmb_szType.ItemIndex:=DataForm.tbl_szType.FieldByName('szType').AsInteger-1;
  edt_szCode.Text:=DataForm.tbl_szType.FieldByName('szCode').AsString;
  edt_szName.Text:=DataForm.tbl_szType.FieldByName('szName').AsString;
end;

procedure TLbwhForm.btnNewClick(Sender: TObject);
var BM:pointer;
begin
  if btnNew.Caption='新增' then
  begin
    btnNew.Caption:='保存';
    DBGridEh.Enabled:=false;
    btnDelete.Enabled:=false;
    btnModify.Enabled:=false;
    btnExit.Enabled:=false;
    cmb_szType.Enabled:=true;
    //edt_szCode.Enabled:=true;
    edt_szName.Enabled:=true;
    cmb_szType.ItemIndex:=-1;
    edt_szCode.Text:='';
    edt_szName.Text:='';
  end else begin
    BM:=DataForm.DataSource.DataSet.GetBookmark;
    if application.MessageBox(pchar('您确定要增加交易类别为 [ '+cmb_szType.Text+' ],交易代码 [ '+edt_szCode.Text+' ],交易名称 [ '+edt_szName.Text+' ] 的数据吗?'),'提示信息',MB_OKCANCEL+MB_ICONQUESTION)=ID_CANCEL then
      DataForm.DataSource.DataSet.GotoBookmark(BM)
    else begin
      if (cmb_szType.ItemIndex=-1) or (trim(edt_szCode.Text)='') or (trim(edt_szName.Text)='') then
      begin
        application.MessageBox('数据输入不符合规则,请重新输入!','提示信息',mb_ok+MB_ICONERROR);
        exit;
      end;
      if (cmb_szType.ItemIndex=0) and (copy(edt_szCode.Text,1,3)<>'001') then
      begin
        application.MessageBox('收入类的交易代码前三位必须为“001”,请重新输入!','提示信息',mb_ok+MB_ICONERROR);
        exit;
      end;
      if (cmb_szType.ItemIndex>0) and (copy(edt_szCode.Text,1,3)<>'002') then
      begin
       application.MessageBox('支出类的交易代码前三位必须为“002”,请重新输入!','提示信息',mb_ok+MB_ICONERROR);
       exit;
      end;
      DataForm.ABSQuery1.SQL.Clear;
      DataForm.ABSQuery1.SQL.Add('select * from szType where szCode=:cs');
      DataForm.ABSQuery1.ParamByName('cs').AsString:=edt_szCode.Text;
      DataForm.ABSQuery1.Open;
      if DataForm.ABSQuery1.RecordCount>0 then
      begin
        application.MessageBox('交易代码已经存在,请重新输入!','提示信息',mb_ok+MB_ICONERROR);
        exit;
      end;
      DataForm.ABSQuery1.SQL.Clear;
      DataForm.ABSQuery1.SQL.Add('insert into szType (szType,szCode,szName) values (:cs1,:cs2,:cs3)');
      DataForm.ABSQuery1.ParamByName('cs1').AsInteger:=cmb_szType.ItemIndex+1;
      DataForm.ABSQuery1.ParamByName('cs2').AsString:=edt_szCode.Text;
      DataForm.ABSQuery1.ParamByName('cs3').AsString:=edt_szName.Text;
      DataForm.ABSQuery1.ExecSQL;
    end;
    btnNew.Caption:='新增';
    DBGridEh.Enabled:=true;
    btnDelete.Enabled:=true;
    btnModify.Enabled:=true;
    btnExit.Enabled:=true;
    cmb_szType.Enabled:=false;
    //edt_szCode.Enabled:=false;
    edt_szName.Enabled:=false;
    if BM<>nil then DataForm.DataSource.DataSet.FreeBookmark(BM);
    DBGridEh.DataSource.DataSet.Refresh;
  end;  
end;

procedure TLbwhForm.btnDeleteClick(Sender: TObject);
begin
  if application.MessageBox('您确定要删除当前的交易类别吗?','提示信息',mb_yesno+MB_ICONQUESTION)=idyes then
  begin
    if edt_szCode.Text='000000' then
      application.MessageBox('交易类别<000000>为系统专用,不能删除!','提示信息',MB_OK+MB_ICONINFORMATION)
    else begin
      DataForm.ABSQuery1.SQL.Clear;
      DataForm.ABSQuery1.SQL.Add('delete from szType where szCode=:cs');
      DataForm.ABSQuery1.ParamByName('cs').AsString:=edt_szCode.Text;
      DataForm.ABSQuery1.ExecSQL;
    end;  
  end;
end;

procedure TLbwhForm.btnModifyClick(Sender: TObject);
begin
  if btnModify.Caption='修改' then
  begin
    btnModify.Caption:='修改确认';
    DBGridEh.Enabled:=false;
    btnNew.Enabled:=false;
    btnDelete.Enabled:=false;
    btnExit.Enabled:=false;
    edt_szName.Enabled:=true;
  end else begin
    if application.MessageBox('您确定要更新当前的交易类别吗?','提示信息',mb_yesno+MB_ICONQUESTION)=idyes then
    begin
      DataForm.ABSQuery1.SQL.Clear;
      DataForm.ABSQuery1.SQL.Add('update szType set szName=:cs1 where szCode=:cs2');
      DataForm.ABSQuery1.ParamByName('cs1').AsString:=edt_szName.Text;
      DataForm.ABSQuery1.ParamByName('cs2').AsString:=edt_szCode.Text;
      DataForm.ABSQuery1.ExecSQL;
    end;
    btnModify.Caption:='修改';
    DBGridEh.Enabled:=true;
    btnNew.Enabled:=true;
    btnDelete.Enabled:=true;
    btnExit.Enabled:=true;
    edt_szName.Enabled:=false;
  end;  
end;

procedure TLbwhForm.btnExitClick(Sender: TObject);
begin
  close
end;

procedure TLbwhForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  DataForm.tbl_szType.Close;
  DataForm.DataSource.DataSet:=nil;
  DBGridEh.DataSource:=nil;
  DataForm.tbl_szType.AfterScroll:=nil;
  Action:=CaFree;
end;

procedure TLbwhForm.FormCreate(Sender: TObject);
begin
  DataForm.DataSource.DataSet:=DataForm.tbl_szType;
  DBGridEh.DataSource:=DataForm.DataSource;
  DataForm.tbl_szType.AfterScroll:=DataChanged;
  DataForm.tbl_szType.Open;
end;

procedure TLbwhForm.RadioButton1Click(Sender: TObject);
begin
  DataForm.tbl_szType.IndexName:='i_type';
  DataForm.tbl_szType.Refresh;
end;

procedure TLbwhForm.RadioButton2Click(Sender: TObject);
begin
  DataForm.tbl_szType.IndexName:='i_code';
  DataForm.tbl_szType.Refresh;
end;

procedure TLbwhForm.cmb_sztypeChange(Sender: TObject);
var
  i:integer;
  TF:boolean;
  LB:string;
begin
  if cmb_szType.ItemIndex=-1 then exit;
  i:=1;
  TF:=true;
  if cmb_szType.ItemIndex=0 then
    LB:='001'
  else
    LB:='002';
  DataForm.ABSQuery2.SQL.Clear;
  DataForm.ABSQuery2.SQL.Add('select * from szType where szCode=:cs');
  while TF do
  begin
    DataForm.ABSQuery2.ParamByName('cs').AsString:=LB+copy(intTostr(1000+i),2,3);
    DataForm.ABSQuery2.Open;
    if DataForm.ABSQuery2.RecordCount=0 then
    begin
      TF:=false;
      edt_szCode.Text:=LB+copy(intTostr(1000+i),2,3);
    end;
    DataForm.ABSQuery2.Close;
    inc(i);
  end;
end;

end.

⌨️ 快捷键说明

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