Советы по Delphi

       

Обнаружение прокрутки TListBox


Как мне определить, что потребитель двигает полосы прокрутки в Tlistbox?

Просто ловите сообщение WMVScroll...

Хмм, было бы неплохо отлавиливать это сообщение и генерировать для этого случая событие OnVScroll. Например так:

unit Listbob;interfaceusesSysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,Forms, Dialogs, StdCtrls;
typeTListBob = 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);begininherited Create(AOwner);FOnHScroll := nil;FOnVScroll := nil;end;
procedure TListBob.WMHScroll(var Message: TWMHScroll);{ помните что данное сообщение вызывается дважды!! }beginif Assigned(FOnHScroll) then FOnHScroll(Self);DefaultHandler(Message);end;
procedure TListBob.WMVScroll(var Message: TWMHScroll);{ помните что данное сообщение вызывается дважды!! }beginif Assigned(FOnVScroll) then FOnVScroll(Self);DefaultHandler(Message);end;
procedure Register;beginRegisterComponents('Dr.Bob', [TListBob]);end;
end.

Dr. Bob (drbob@pi.net) [000685]



Содержание раздела