读书人

应该是有关RTTI机制的有关问题!有点难

发布时间: 2012-02-20 21:18:23 作者: rapoo

应该是有关RTTI机制的问题!有点难
如TDBEdit,TDBComboBox,TDBMemo等都用相同的属性如DataField
我们可以通过
if GetPropInfo(Obj, 'DataField ') <> nil then
SetPropValue(TObject, 'DataField ', Value) 来给他的DataField赋值
现在问题是:他们都有DbClick事件
如何通过一语句来调用他的DBClick事件,而不是通过类型来判断比如:
if TWinControl(Obj) is TDBEdit then TDBEdit(obj).OnDbClick(nil)
else if TWinControl(Obj) is TDBComboBox then TDBComboBox(obj).OnDbClick(nil)
else if.....

[解决办法]
var
m : TMethod;
Proc: TNotifyEvent;
begin
m := GetMethodProp(obj, 'OnDblClick ');
if m.Code <> nil then
begin
@Proc := m.Code;
Proc(obj);
end;
end;

读书人网 >.NET

热点推荐