我需要编写一个在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.谢谢
发布于 2015-03-07 18:37:06
我的天,这个问题更适合https://codereview.stackexchange.com/。
不管怎样,让我指出一件事:
DoBeforePost的可见性提升到了published。在声明TQuery或其祖先之一中查找this this方法。用相同的可见性覆盖该方法,因为不需要there.TMxQuery.Create,因为它不会添加任何内容。https://stackoverflow.com/questions/28912313
复制相似问题