提问: 
我建了一个新类Tadoq继承了Tadoquery类,已经重新定义了Open和ExecSql等一些方法,现在想达到如下效果. 
var 
 MyQuery:Tadoq; 
begin 
  Myquery:=tadoq.create(nil); 
end; 
如何在Myquery新建成功后,他的onRecordChangeComplete事件中就自动有我准备好的代码? 
原先在控件中是双击这个事件属性供大家自己填写的,我想要自动固定成我的代码?我写了下面这个
type
  Tadoq=class(Tadoquery)
  procedure OnRecordChangeComplete(DataSet: TCustomADODataSet;
  const Reason: TEventReason; const RecordCount: Integer; const Error: Error;
  var EventStatus: TEventStatus);
end;implementationprocedure Tadoq.OnRecordChangeComplete(DataSet: TCustomADODataSet;
  const Reason: TEventReason; const RecordCount: Integer; const Error: Error;
  var EventStatus: TEventStatus);
begin
  showmessage('ab');
end;可这个事件根本没起到效果,请大家指点一下,我改怎么写这个类

解决方案 »

  1.   

    构造函数写
    self.OnRecordChangeComplete:=你定义的方法;
      

  2.   

    procedure TForm1.bbbbbbbb(Sender: TObject);
    begin
    showmessage('aaa');
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
    form1.OnClick:=bbbbbbbb;
    end;类似这样.你自己写的函数所有参数必须与OnRecordChangeComplete要求的一摸一样
      

  3.   

    {以下以TEdit为例。其实实际应用中不用搞这么复杂,Create之后,直接赋值就可以了}unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type  TEdit = class(StdCtrls.TEdit)
      public
        constructor Create(AOwner: TComponent); override;
        procedure MyEdtClick(Sender: TObject);
      end;  TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      with TEdit.Create(Self) do begin
        Parent := Self;
        Top := 50;
        Left:= 50;
        Text := 'MyEdt';
        Width:= 150;
        Show;
      end;
    end;{ TEdit }constructor TEdit.Create(AOwner: TComponent);
    begin
      inherited;
      Self.OnClick := MyEdtClick;
    end;procedure TEdit.MyEdtClick(Sender: TObject);
    begin
      Showmessage(Self.Text);
    end;end.
      

  4.   

    type
      Tadoq=class(Tadoquery)
      private
        procedure MyOnRecordChangeComplete(         DataSet: TCustomADODataSet
                                            ; const Reason: TEventReason
                                            ; const RecordCount: Integer
                                            ; const Error: Error
                                            ; var EventStatus: TEventStatus);
        procedure SetOnRecordChangeComplete(Value:  TRecordChangeCompleteEvent);
        function GetOnRecordChangeComplete:  TRecordChangeCompleteEvent;
      public
        constructor Create(AOwner: TComponent); override;
      published
        //覆盖掉原来的事件属性,当然最好是不要使用
        property OnRecordChangeComplete: TRecordChangeCompleteEvent read GetOnRecordChangeComplete write SetOnRecordChangeComplete;  end;
    implementation constructor TADOQ.Create(AOwner: TComponent);
    begin
      inherited;
      inherited OnRecordChangeComplete := MyOnRecordChangeComplete;
    end;procedure Tadoq.MyOnRecordChangeComplete(DataSet: TCustomADODataSet;
      const Reason: TEventReason; const RecordCount: Integer; const Error: Error; 
      var EventStatus: TEventStatus); 
    begin 
      showmessage('ab');
    end;
    procedure Tadoq.SetOnRecordChangeComplete(Value:  TRecordChangeCompleteEvent);
    begin
      //什么事也不做
    end;
    function Tadoq.GetOnRecordChangeComplete:  TRecordChangeCompleteEvent;
    begin
      Result := Nil;
    end;