Thema: Delphi Memo Scrollbar Events

Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Memo Scrollbar Events

  Alt 20. Aug 2012, 18:02
Auf die Schnelle aus dem Hut:
Delphi-Quellcode:
type
  TScrollChangeEvent = procedure(Sender: TObject;
    const ScrollCode, Pos: SmallInt) of object;

  TMemo = class(StdCtrls.TMemo)
  private
    FOnHorzScroll: TScrollChangeEvent;
    FOnVertScroll: TScrollChangeEvent;
    procedure WMHScroll(var Msg: TWMHScroll); message WM_HSCROLL;
    procedure WMVScroll(var Msg: TWMVScroll); message WM_VSCROLL;
  public
    property OnHorzScroll: TScrollChangeEvent read FOnHorzScroll write FOnHorzScroll;
    property OnVertScroll: TScrollChangeEvent read FOnVertScroll write FOnVertScroll;
  end;

  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure DoOnHorzScroll(Sender: TObject; const ScrollCode, Pos: SmallInt);
    procedure DoOnVertScroll(Sender: TObject; const ScrollCode, Pos: SmallInt);
  public
    { Public-Deklarationen }
  end;

...

procedure TMemo.WMHScroll(var Msg: TWMHScroll);
begin
  if Assigned(FOnHorzScroll) then
    FOnHorzScroll(self, Msg.ScrollCode, Msg.Pos);
  inherited;
end;

procedure TMemo.WMVScroll(var Msg: TWMVScroll);
begin
  if Assigned(FOnVertScroll) then
    FOnVertScroll(self, Msg.ScrollCode, Msg.Pos);
  inherited;
end;

procedure TForm1.DoOnHorzScroll(Sender: TObject; const ScrollCode,
  Pos: SmallInt);
begin
  ShowMessage('Horizontal: ' + IntToStr(Pos));
end;

procedure TForm1.DoOnVertScroll(Sender: TObject; const ScrollCode,
  Pos: SmallInt);
begin
  ShowMessage('Vertikal: ' + IntToStr(Pos));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.OnHorzScroll := DoOnHorzScroll;
  Memo1.OnVertScroll := DoOnVertScroll;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat