Как мне определить, что потребитель двигает полосы прокрутки в Tlistbox?
Просто ловите сообщение WMVScroll...
Хмм, было бы неплохо отлавиливать это сообщение и генерировать для этого случая событие OnVScroll. Например так:
unit Listbob;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;
type TListBob = class(tlistbox) private { Private declarations } FOnHScroll: TNotifyEvent; FOnVScroll: TNotifyEvent; protected { Protected declarations } procedure WMHScroll(var Message: TWMHScroll); message WM_HSCROLL; procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL; public { Public declarations } constructor Create(AOwner: TComponent); override; published { Published declarations } property OnHScroll: TNotifyEvent read FOnHScroll write FOnHScroll; property OnVScroll: TNotifyEvent read FOnVScroll write FOnVScroll; end; procedure Register; implementation constructor TListBob.Create(AOwner: TComponent); begin inherited Create(AOwner); FOnHScroll := nil; FOnVScroll := nil; end; procedure TListBob.WMHScroll(var Message: TWMHScroll); { помните что данное сообщение вызывается дважды!! } begin if Assigned(FOnHScroll) then FOnHScroll(Self); DefaultHandler(Message); end; procedure TListBob.WMVScroll(var Message: TWMHScroll); { помните что данное сообщение вызывается дважды!! } begin if Assigned(FOnVScroll) then FOnVScroll(Self); DefaultHandler(Message); end; procedure Register; begin RegisterComponents('Dr.Bob', [TListBob]); end; end. |
Dr. Bob (drbob@pi.net) [000685]