删除所有记录的类的定义如下:
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.
应用如下:
procedure TForm3.Button15Click(Sender: TObject); begin TDeleteAll.deleteAllRecord(frmDataPool.qry公司利润表); end;
注意:用之前要先引用下类单元名;
如:uses UDeleteAll;
不用定义类的时候的写法:
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.另外也增加了代码的简洁易懂,让界面设计里的代码尽可能简洁;
也方便了维护,只要改功能变动,只需对类进行更改就可以对所有用该功能的地方修改;
3.由于类需要独立单元没有直接把代码写在事件里翻看省事,如果这个功能重用次数少适合直接写在代码事件里。
原文:http://www.cnblogs.com/ddxxxb/p/6979961.html