提问:
我建了一个新类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;可这个事件根本没起到效果,请大家指点一下,我改怎么写这个类
我建了一个新类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;可这个事件根本没起到效果,请大家指点一下,我改怎么写这个类
self.OnRecordChangeComplete:=你定义的方法;
begin
showmessage('aaa');
end;procedure TForm1.FormCreate(Sender: TObject);
begin
form1.OnClick:=bbbbbbbb;
end;类似这样.你自己写的函数所有参数必须与OnRecordChangeComplete要求的一摸一样
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.
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;