如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.....
我们可以通过
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.....
解决方案 »
- 新手问题 字符串和PChar之间的关系
- 服务程序的问题
- 如何实现让用户来调整delphi中报表内容的位置
- 新手求救:delphi+sql server+word文档(可以单独给分) 急!!!!!
- 一个调用存储过程中的出错消息,请各位大哥指点迷津!!在线等!高分相送!
- 新手,请教如何将字符串'2002/07/31'转换成‘2002-07-31’?
- dll的问题:动态库被FreeLibrary时,如何调用自己的退出函数
- 如何修改delphi中的控件? TControlBar里面的小杠杠挺讨厌的,我想弄掉它
- DateTime字段在DbGrid中显示时如何只显示小时和分钟?
- 关于中国式报表Ereport打印memo型字段的问题
- 解决就散分:如何让TabSheet加上滚动条(分全给不难吧)
- 怎么让程序执行cmd窗口下的命令呢?
m : TMethod;
Proc: TNotifyEvent;
begin
m := GetMethodProp(obj,'OnDblClick');
if m.Code<>nil then
begin
@Proc := m.Code;
Proc(obj);
end;
end;
比如说上面这段代码是写到button2的click事件里的,
然后Proc(obj);调用obj的ondblclick的时候,在ondblclick事件里的self会变为button2
这样在调用窗体里的其他控件的时候会出问题的,
我觉得还是用类型判断好或者你可以把他们的ondblclick事件定义成一个
比如;你自己写个过程 procedure OndbDbleClick(sender: TObject);
然后在过程里面判断类型在调用相应的dblclick事件,
这样在其他地方调用这几个控件的ondblclick事件的时候,你只要写句OndbDbleClick(obj)就可以了
当焦点在窗体的哪里,我是根据ActiveControl属性来判断的,该ActiveControl的类型是不确定的
如果用判断类型来作的话,相当写死掉了