TListBox自动处理滚动事件的发生,若一定要自行处理,可以为TListBox派生可以接收滚动条滚动事件的对象,具体如下: 1、将下面单元文件保存成名称为 Unit_esBasicListBox.pas 的文件;unit Unit_esBasicListBox;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TesBasicListBox = class(TListBox)
private
{ Private declarations }
FOnMouseScroll:TNotifyEvent;
protected
{ Protected declarations }
procedure WMVSCROLL(var message:TMessage);message WM_VSCROLL;
public
{ Public declarations }
published
{ Published declarations }
property OnMouseScroll:TNotifyEvent read FOnMouseScroll write FOnMouseScroll;
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('ESBasic', [TesBasicListBox]);
end;procedure TesBasicListBox.WMVSCROLL(var message:TMessage);
begin
if Assigned(FOnMouseScroll) then FOnMouseScroll(self);
end;
end. 2、在Component\InstallComponent菜单下的对话框选择刚才文件,确定、编译、安装,将产生新的TesBasicListBox控件,该控件将可以接受处理滚动事件,在Object Inspect页将出现新的OnMouseScroll; 3、调试、运行通过; 4、加分!
一点补充:该控件将会替换掉原有的事件处理,若希望是在原有处理基础上添加可以将消息处理函数写成:procedure TesBasicListBox.WMVSCROLL(var message:TMessage);
begin
inherited;
if Assigned(FOnMouseScroll) then FOnMouseScroll(self);
end;