Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

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

Delphi , Компоненты и Классы , Списки

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

Автор: Dr. Bob

Хмм, было бы неплохо отлавиливать это сообщение и генерировать для этого случая событие 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.

Это компонент Delphi, конкретно custom TListBox контроллер, предназначенный для обнаружения и ответа на горизонтальные и вертикальные события скроллинга.

Вот разбивка кода:

Интерфейс Секция интерфейса определяет класс TListBob, который наследуется от TListBox. Он имеет три приватных переменные: FOnHScroll, FOnVScroll и два защищенных метода: WMHScroll и WMVScroll.

Защищенные Методы Два этих метода обрабатывают сообщения Windows для горизонтального и вертикального скроллинга (WM_HSCROLL и WM_VSCROLL, соответственно). Они вызывают соответствующие обработчики событий, если они назначены, а затем передают сообщение в стандартный обработчик с помощью DefaultHandler(Message).

Публичный Конструктор Конструктор Create(AOwner: TComponent) переопределяется из базового класса. Он инициализирует владельца компонента и устанавливает обработчики событий в nil.

Опубликованные Свойства Два опубликованных свойства объявлены: OnHScroll и OnVScroll, которые позволяют пользователям этого custom-контрола назначать свои обработчики событий для горизонтального и вертикального скроллинга, соответственно.

Имплементация Секция имплементации содержит три процедуры:

  • Конструктор TListBob.Create(AOwner: TComponent) инициализирует владельца компонента и устанавливает обработчики событий в nil.
  • Защищенные методы WMHScroll и WMVScroll обрабатывают сообщения Windows для горизонтального и вертикального скроллинга.
  • Процедура Register регистрирует custom-контроль с Delphi, чтобы он мог использоваться в проекте.

В целом, этот код обеспечивает способ обнаружения и ответа на события скроллинга в custom-контроле TListBox. Он полезен, если вам нужно выполнить конкретные действия при прокрутке списка.

Автор статьи Dr. Bob описывает способ обнаружения прокрутки элемента TListBox в Delphi, создавая класс-наследник от TListBox, который генерирует события OnHScroll и OnVScroll при горизонтальной и вертикальной прокрутке соответственно.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Списки ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-08 18:56:42/0.027343988418579/1