首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi TQuery子对象

Delphi TQuery子对象
EN

Stack Overflow用户
提问于 2015-03-07 14:58:21
回答 1查看 611关注 0票数 1

我需要编写一个在onBeforePost事件上重写的TQuery子代,我应该检查它的状态是dsInsert还是dsEdit。并允许或不进行的帖子,但我需要有人与自定义组件的经验,以复核它。

我已经很久没有创建我的组件了,我有点生疏了。你能看看我得到了什么,并告诉我我做得对吗?

下面是我的组件代码

代码语言:javascript
复制
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.

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-03-07 18:37:06

我的天,这个问题更适合https://codereview.stackexchange.com/

不管怎样,让我指出一件事:

  1. 你的代码应该是可以工作的。
  2. 正如@SirRufo所说,你不必要地将方法DoBeforePost的可见性提升到了published。在声明TQuery或其祖先之一中查找this this方法。用相同的可见性覆盖该方法,因为不需要there.
  3. Constructor TMxQuery.Create,因为它不会添加任何内容。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28912313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档