刪除全部記錄的類的定義以下:api
unit UDeleteAll; interface uses FDataPool, Data.DB, Data.Win.ADODB, Vcl.Menus, Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.ExtCtrls, Vcl.DBCtrls, Vcl.Grids, Vcl.DBGrids, Clipbrd, Vcl.StdCtrls; /// <summary> /// 清空全部 /// </summary> type TDeleteAll=class public class procedure deleteAllRecord (var sAqry:TADOQuery); end; implementation uses 平常管理助手; class procedure TDeleteAll.deleteAllRecord (var sAqry:TADOQuery); var SBiao: string; begin SBiao:=copy(sAqry.name,4,length(sAqry.name)-3); try with TADOQuery.Create(nil) do begin Connection := frmDataPool.ADOConnection1; if messagedlg('刪除全部記錄?',mtconfirmation,[mbyes,mbno],0)<>mryes then Abort else begin SQL.Text := 'DELETE FROM ' + SBiao ; ExecSQL; end; //防止程序假死 Application.ProcessMessages; //刷新下顯示 sAqry.Close; sAqry.Open; end; finally TADOQuery.Create(nil).Free; end; end; end.
應用以下:spa
procedure TForm3.Button15Click(Sender: TObject); begin TDeleteAll.deleteAllRecord(frmDataPool.qry公司利潤表); end;
注意:用以前要先引用下類單元名;設計
如:uses UDeleteAll; orm
不用定義類的時候的寫法:blog
procedure TForm3.Button15Click(Sender: TObject); begin try with TADOQuery.Create(nil) do begin Connection := frmDataPool.ADOConnection1; if messagedlg('刪除全部記錄?',mtconfirmation,[mbyes,mbno],0)<>mryes then Abort else begin SQL.Text := 'DELETE FROM 公司利潤表'; ExecSQL; end; //防止程序假死 Application.ProcessMessages; //刷新下顯示 frmDataPool.qry公司利潤表.Close; frmDataPool.qry公司利潤表.Open; end; finally TADOQuery.Create(nil).Free; end; end;
總結:繼承
1.運用類的封裝、繼承、多態能夠讓業務邏輯的代碼專注寫成一個類單元,方便同一相似功能的引用,避免寫屢次重複代碼;事件
2.另外也增長了代碼的簡潔易懂,讓界面設計裏的代碼儘量簡潔;ip
也方便了維護,只要改功能變更,只需對類進行更改就能夠對全部用該功能的地方修改;string
3.因爲類須要獨立單元沒有直接把代碼寫在事件裏翻看省事,若是這個功能重用次數少適合直接寫在代碼事件裏。it