Einzelnen Beitrag anzeigen

peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
672 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Ereignis für Scrollbalken in Scrollbox

  Alt 20. Jan 2019, 13:18
Wie Du herausgefunden hast hat die TScrollbox-Klasse keine entsprechenden Events, aber das läßt sich ziemlich einfach nachflicken. Ich habe in meiner alten Sammlung eine Control gefunden, das ich vor Urzeiten mal für eine ähnliche Frage auf den alten Borland-Foren geschrieben hatte. Keine Ahnung für welche Delphi-Version, aber es sollte auch für die neuen Versionen funktionieren. Weist Du, wie man eine eigenen Komponente per Designtime package in der IDE installiert?

Delphi-Quellcode:
unit EvScrollBox;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, Forms;

type
  TEvScrollBox = class(TScrollBox)
  private
    FVScrollEvent: TNotifyEvent;
    FHScrollEvent: TNotifyEvent;
    Procedure WMVScroll( Var msg: TWMVScroll ); Message WM_VSCROLL;
    Procedure WMHScroll( Var msg: TWMHScroll ); Message WM_HSCROLL;
  protected
    Procedure DoVScroll;
    Procedure DOHSCroll;
  public
  published
    property OnVScroll: TNotifyEvent
      read FVScrollEvent write FVScrollEvent;
    property OnHScroll: TNotifyEvent
      read FHScrollEvent write FHScrollEvent;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TEvScrollBox]);
end;

{ TEvScrollBox }

procedure TEvScrollBox.DOHSCroll;
begin
  If Assigned( FHSCrollEvent ) The
    FHScrollEvent( self );
end;

procedure TEvScrollBox.DoVScroll;
begin
  If Assigned( FVSCrollEvent ) Then
    FVScrollEvent( self );
end;

procedure TEvScrollBox.WMHScroll(var msg: TWMHScroll);
begin
  inherited;
  If msg.ScrollCode <> SB_ENDSCROLL Then
    DoHScroll;
end;

procedure TEvScrollBox.WMVScroll(var msg: TWMVScroll);
begin
  inherited;
  If msg.ScrollCode <> SB_ENDSCROLL Then
    DoVScroll;
end;

end.
Peter Below
  Mit Zitat antworten Zitat