怎样创建动态 ClientDataSet 控件的BeforeGetRecords事件?(100分)

  • 主题发起人 主题发起人 xinshouyige
  • 开始时间 开始时间
X

xinshouyige

Unregistered / Unconfirmed
GUEST, unregistred user!
//我在一个 Form 里动态创建一个 ClientDataSet,但是,无法创建它的带参数的事件BeforeGetRecords。
procedure TForm.btnClick(Sender: TObject);
var tempOwnerData : OleVariant;
tempCDS1 :TClientDataSet ;
......
begin
......
tempCDS1 := TClientDataSet.Create(nil);
tempCDS1.RemoteServer := socketConnect ;
tempCDS1.ProviderName := dspQueryName_WIP;

//此处编译时老是出错:untype pointer or untype parameter。到底怎么才可以调用这个事件啊?或者有什么其他的好方法?本人新手,请各位高手指教时列出 code 供参考。
tempCDS1.BeforeGetRecords := myBeforeGetRecords(self, tempOwnerData);

tempCDS1.Close ;
tempCDS1.Open ;
......
end;

procedure TForm.myBeforeGetRecords(Sender: TObject;
var myOwnerData : OleVariant);
begin
myOwnerData := VarArrayOf([SQLStr, Null]);
end;

//本人新手,请各位高手指教时列出 code 供参考。
 
tempCDS1.BeforeGetRecords := myBeforeGetRecords;
 
type
FProc = myBeforeGetRecords(sender: TObject, ...);
tempCDS1.BeforeGetRecords := FProc;
 
to zealothasu,
tempCDS1.BeforeGetRecords := myBeforeGetRecords;
可以了,谢谢。可是我不明白,这样的话,myBeforeGetRecords 就没有参数传进去了呀,怎么不会出错呢?
 
只是把指针传进取而已
调用的时候就调用这个指针的地址所在函数
自然会把参数放进去
 
>>tempCDS1.BeforeGetRecords := myBeforeGetRecords(self, tempOwnerData);
^^^^^^^^^^^^^^^^^^^^^^^^
你上面的语句是想让TempCDS1.BeforeGetRecords 执行你的MyBeforeGetRecords方法,只需要给出方法的名字,不要加括号和参数.
 
知道了,多谢高人!
 
后退
顶部