📄 lbwh.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 + -