Добавить комментарий

Delphi

Как получать события скроллинга в Memo

interface

uses
    WinAPI.Messages
   ;

type
  // Используем этот трюк, чтобы получить доступ к protected методам TControl
  TMyControl = class(TControl);

  TTestAreaMain = class(TForm)
                    Memo3: TMemo;
                    procedure FormCreate(Sender: TObject);
                    ...
                  private
                    // Наш собственный обработчик событий
                    procedure ScrollHandler(var Message: TMessage);
                  end;

implementation

procedure TTestAreaMain.FormCreate(Sender: TObject);
begin
  // Заменяем стандартный обработчик TControl.WndProc на наш.
  Memo3.WindowProc := ScrollHandler;
end;


procedure TTestAreaMain.ScrollHandler(var Message: TMessage);
begin
  // Если событие - скроллинг...
  if ((Message.Msg = WM_VSCROLL) or (Message.Msg = WM_HSCROLL))
     // и можно реагировать только один раз, когда скроллинг завершился,
     and (TWMVScroll(Message).ScrollCode = SB_ENDSCROLL)   
  then begin
         // поделать то, ради чего всё и затевалось.
       end;
  // вызвать исходный обработчик для корректного завершения обработки события.
  TMyControl(Memo3).WndProc(Message);
end;

Метки:

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Допустимые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и абзацы переносятся автоматически.
  • Вы можете цитировать другие сообщения, используя тэг [quote]

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.