如何在事件响应函数中得知是被哪个控件调用的?(200分)

  • 主题发起人 主题发起人 井中月
  • 开始时间 开始时间

井中月

Unregistered / Unconfirmed
GUEST, unregistred user!
是这样的,我的一个使用QuickRep报表的程序,因为数据库的字段数是不能预知的,所以QuickRep中的QRDBText我都是定义一个数组,然后在程序中动态创建。
而现在我必须编写每个QRDBText的OnPrint事件,事实上,每个OnPrint事件函数大致是相同的,只是因QRDBText数组的的下标不同而稍有不同。
那么,我是不是可以为所有的QRDBText的OnPrint共用一个事件相应函数,而在这个函数中来判断是由具体哪一个QRDBText产生的呢?
请各位大虾指点,感激不尽!
 
SENDER参数即可。
 
if sender = control1 then ....
 
没有必要用数组吧,不是有Controls控件数组吗?可设置QRDBText的Tag属性以区分不同的控件。可以让Tag与数组下标同值。
IF (Sender AS QRDBText)。tag = 0 then


 
>>因为数据库的字段数是不能预知的,所以QuickRep中的QRDBText我都是定义一个数组,然后在程序中动态创建。
~~~~~~~~~
这是动态报表的问题,你查询一下,有很多人问过。
我的建议是用CHECKBOX让用户选,然后再产生报表。
或者用SENDER参数。
 
FOnPrint:procedure(sender:Tobject) of Object;

事件触发代码

if assigned(FonPrint) then FonPrinter(QRDBText);
即可
 
我也建议使用DBText的Tag属性,用法可参照Delphi自带的Demo
 
多人接受答案了。
 
这就结束了?我还没发言哪!
 
后退
顶部