📄 a0106f002unit.pas
字号:
//////////////////////////////////////////////////////////////////模板名称:F002Frm in Foo2Unit ////模板功能;数据的添加与修改 ////输入参数:tag 0为修改,1为添加 ////输出参数:无 ////编写人:陈宇 ////编写时间:2001年9月21日 ////最后修改:2001年9月24日 //////////////////////////////////////////////////////////////////unit A0106F002Unit;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ImgList, ComCtrls, ToolWin, Grids, DBGrids, StdCtrls, ExtCtrls, DBCtrls, Db, DBTables, ADODB, Buttons, Mask,Variants;type TA0106F002Frm = class(TForm) Tc01Dt: TDataSource; TC03ATbl: TADOTable; ToolBar1: TToolBar; PrintTBBtn: TToolButton; PreviewTBBtn: TToolButton; SaveTBBtn: TToolButton; AbortTBBtn: TToolButton; HelpTBBtn: TToolButton; ExitTBBtn: TToolButton; ImageList1: TImageList; ImageList2: TImageList; Panel1: TPanel; Label1: TLabel; Label2: TLabel; TC03D01DbEdt: TDBEdit; TC03D02DbEdt: TDBEdit; Label3: TLabel; TC03D03DbEdt: TDBEdit; Label4: TLabel; TC03D04DbEdt: TDBEdit; Label5: TLabel; Label6: TLabel; TC03D06DbEdt: TDBEdit; Label7: TLabel; TC03D05DbEdt: TDBEdit; Label8: TLabel; DBEdit1: TDBEdit; procedure ExitTBBtnClick(Sender: TObject); procedure SaveTBBtnClick(Sender: TObject); procedure AbortTBBtnClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TC03D01DbEdtChange(Sender: TObject); procedure DTPickKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TC02ATblPostError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction); procedure TC03D02DbEdtChange(Sender: TObject); procedure TC03D03DbEdtChange(Sender: TObject); procedure TC03D01DbEdtKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure TC03D02DbEdtKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure TC03D03DbEdtKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure TC03D04DbEdtKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure TC03D05DbEdtKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure TC03ATblAfterInsert(DataSet: TDataSet); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure DBEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private declarations } public { Public declarations } strEditArray:array [0..2] of string; striniHelpName:string; strTC03D01:string;////预先付的值 end;var A0106F002Frm: TA0106F002Frm; intErrCounts:Integer; //errno用来记录数据填加时的错误项数 //初始化为当前必填的项目数,每正确填加一项将减一implementationuses DataLinkUnit,GlobalLibUnit;{$R *.DFM}procedure TA0106F002Frm.ExitTBBtnClick(Sender: TObject);begin Close;end;procedure TA0106F002Frm.SaveTBBtnClick(Sender: TObject);begin if intErrCounts<>0 then begin Application.MessageBox('数据填写的有错误,红色的为有错误的项目,请检查填写内容!', '提示',MB_OK+MB_DefButton1+MB_IconInformation+MB_ApplModal); TC03D01DbEdt.SetFocus; Exit; end; try TC03ATbl.Post; except Application.MessageBox('数据提交错误,请检查填写内容,重新提交!', '提示',MB_OK+MB_DefButton1+MB_IconInformation+MB_ApplModal); DMMain.adoConnMain.RollbackTrans; //回滚一个事务 DMMain.adoConnMain.BeginTrans; //开始一个事务 TC03D01DbEdt.SetFocus; Exit; end; DMMain.adoConnMain.CommitTrans; //提交一个事务 DMMain.adoConnMain.BeginTrans; //开始一个事务 try if tag=0 then //修改 TC03ATbl.Edit else //添加 TC03ATbl.Append; except Application.MessageBox('添加记录时产生错误!请与数据库管理员联系', '提示',MB_OK+MB_DefButton1+MB_IconInformation+MB_ApplModal); TC03D01DbEdt.SetFocus; end; TC03D01DbEdt.SetFocus;end;procedure TA0106F002Frm.AbortTBBtnClick(Sender: TObject);begin DMMain.adoConnMain.RollbackTrans; //回滚一个事务 //更新表,注意顺序 try TC03ATbl.Active :=False; TC03ATbl.Active :=True; finally DMMain.adoConnMain.BeginTrans; //开始一个事务 end; try if tag=0 then //修改 begin TC03ATbl.Locate('公司名称',self.strEditArray[0],[loCaseInsensitive]); TC03ATbl.Edit; end else //添加 begin TC03ATbl.Append; end; except Application.MessageBox('操作数据库时产生错误!请与数据库管理员联系', '提示',MB_OK+MB_DefButton1+MB_IconInformation+MB_ApplModal); end;end;procedure TA0106F002Frm.FormShow(Sender: TObject);begin intErrCounts:=3; //初始化为三个错误,因为三项必填 try TC03ATbl.Active :=True; finally DMMain.adoConnMain.BeginTrans; //开始一个事务 end; if tag=0 then //修改 begin Self.Caption :='修改'; TC03ATbl.Locate('公司名称;开户行;帐号', VarArrayOf([strEditArray[0],strEditArray[1],strEditArray[2]]),[]); intErrCounts:=0; TC03ATbl.Edit; end else //添加 begin Self.Caption :='添加'; TC03ATbl.Append; DBEdit1.SetFocus; DBEdit1.Text:=gstrOperaterCode; end; InitEdtCtlIme(self.Panel1,imChinese,gstrInputMethod); TC03D01DbEdt.SetFocus;end;procedure TA0106F002Frm.TC03D01DbEdtChange(Sender: TObject);var bNewState:Boolean;begin//此处简单校验此编辑控件的内容 if TC03D01DbEdt.text<>'' then //如果合格 begin bNewState:=True; if TC03D01DbEdt.Color<>clWindow then begin intErrCounts:=intErrCounts-1; TC03D01DbEdt.Color :=clWindow; end; end else //如果不合格 begin bNewState:=false; if TC03D01DbEdt.Color<>$008080FF then begin intErrCounts:=intErrCounts+1; TC03D01DbEdt.Color :=$008080FF; end; end; AbortTBBtn.Enabled :=bNewState;end;procedure TA0106F002Frm.DTPickKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);begin if (Key=13) then begin TC03D01DbEdt.SetFocus; end;end;procedure TA0106F002Frm.FormClose(Sender: TObject; var Action: TCloseAction);var result:Word;begin DMMain.adoConnMain.RollbackTrans; //回滚一个事务 Action:=caFree; Exit; if (intErrCounts=0) and (tag=1) then //如果有数据未保存而且处于添加状态 begin result:=Application.MessageBox('当前记录未保存,要保存吗?', '提示',MB_YesNoCancel+MB_DefButton1+MB_IconQuestion+MB_ApplModal); if result=IdYes then begin SaveTBBtnClick(Sender); //保存 end; if result=IdCancel then begin Action:=caNone; exit; //取消退出动作 end; if result=IdNo then begin DMMain.adoConnMain.RollbackTrans; //回滚一个事务 end; end else //如果没有数据需要保存 begin result:=Application.MessageBox('真的要退出吗?', '提示',MB_YesNo+MB_DefButton1+MB_IconQuestion+MB_ApplModal); if result=IdNo then begin Action:=caNone; //取消退出动作 Exit; end; DMMain.adoConnMain.RollbackTrans; //回滚一个事务 end; //注意关闭的顺序 TC03ATbl.Active :=False;end;procedure TA0106F002Frm.TC02ATblPostError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction);begin Application.MessageBox('客户名称不能重复或为空,请检查填写内容!', '提示',MB_OK+MB_DefButton1+MB_IconInformation+MB_ApplModal); Action:=daAbort;end;procedure TA0106F002Frm.TC03D02DbEdtChange(Sender: TObject);var bNewState:boolean;begin//此处简单校验此编辑控件的内容 if TC03D02DbEdt.text<>'' then //如果合格 begin bNewState:=True; if TC03D02DbEdt.Color<>clWindow then begin intErrCounts:=intErrCounts-1; TC03D02DbEdt.Color :=clWindow; end; end else //如果不合格 begin bNewState:=false; if TC03D02DbEdt.Color<>$008080FF then begin intErrCounts:=intErrCounts+1; TC03D02DbEdt.Color :=$008080FF; end; end; AbortTBBtn.Enabled :=bNewState;end;procedure TA0106F002Frm.TC03D03DbEdtChange(Sender: TObject);var bNewState:boolean;begin//此处简单校验此编辑控件的内容 if TC03D03DbEdt.text<>'' then //如果合格 begin bNewState:=True; if TC03D03DbEdt.Color<>clWindow then begin intErrCounts:=intErrCounts-1; TC03D03DbEdt.Color :=clWindow; end; end else //如果不合格 begin bNewState:=false; if TC03D03DbEdt.Color<>$008080FF then begin intErrCounts:=intErrCounts+1; TC03D03DbEdt.Color :=$008080FF; end; end; AbortTBBtn.Enabled :=bNewState;end;procedure TA0106F002Frm.TC03D01DbEdtKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if (Key=13) then TC03D02DbEdt.SetFocus;end;procedure TA0106F002Frm.TC03D02DbEdtKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if (Key=13) then TC03D03DbEdt.SetFocus;end;procedure TA0106F002Frm.TC03D03DbEdtKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if (Key=13) then TC03D04DbEdt.SetFocus;end;procedure TA0106F002Frm.TC03D04DbEdtKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if (Key=13) then TC03D05DbEdt.SetFocus;end;procedure TA0106F002Frm.TC03D05DbEdtKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if (Key=13) then TC03D06DbEdt.SetFocus;end;procedure TA0106F002Frm.TC03ATblAfterInsert(DataSet: TDataSet);begin TC03ATbl.Fields[0].AsString:=strTC03D01; strTC03D01:='';end;procedure TA0106F002Frm.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin case key of 114: // F3 SaveTBBtnClick(Sender); end;end;procedure TA0106F002Frm.DBEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if key=13 then SaveTBBtn.Click;end;end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -