我需要在onBeforePost事件上编写一个带有覆盖的TQuery后代,我应该检查状态是否为dsInsert或dsEdit ...并允许或不允许帖子继续,但我需要具有自定义组件经验的人仔细检查一下。
我创建组件已经很久了,而且我有点生疏了。你能看看我得到了什么,并告诉我,如果我做得对吗?
这是我的组件代码
unit MxQuery;
interface
uses
SysUtils, Classes, DB, DBTables;
type
TMxQuery = class(TQuery)
procedure DoBeforePost; override;
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
constructor Create(AOwner:TComponent); override;
end;
procedure Register;
implementation
constructor TMxQuery.Create(AOwner:Tcomponent);
begin
inherited create(AOwner);
end;
procedure Register;
begin
RegisterComponents('Samples', [TMxQuery]);
end;
procedure TMxQuery.DoBeforePost;
begin
case self.DataSource.State of
dsEdit,dsInsert:
begin
//Do nothing or other stuff
end;
else
begin
self.DataSource.DataSet.Cancel;
Abort;
end;
end;
inherited;
end;
end.
由于
答案 0 :(得分:1)
无论如何,让我指出一些事情:
DoBeforePost
的可见性提升为published
。在声明TQuery
或其祖先之一中查找此方法。使用相同的可见性覆盖该方法。TMxQuery.Create
,因为它不会添加任何内容。