Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

Re: Listbox: Wie kann ich auf Änderung des TopIndex' reagier

  Alt 31. Jan 2005, 08:16
Zitat von Nogge:
Ich möchte aufs Scrollen allgemein in der Listbox reagieren können, d.h. mit der Maus und mit den Tasten. Deshalb dachte ich auch daran, auf die Änderung des TopIndex' zu reagieren, denn dann wird ja immer gescrollt.
Ok, jetzt versteh ich... Dann musst du die Windows-Message für das Scrollen abfangen und ein Event dafür schreiben (so wie OnClick usw.)
Zitat von Nogge:
Ich verstehe deine Property aber immer noch nicht (sry^^). Also wenn ich jetzt in die SetTopIndex-Procedure meinen Code hineinschreibe, wird dieser immer ausgeführt, wenn sich der TopIndex ändert (habs noch nicht ausprobiert^^)?
Der Code würde eben nur dann ausgeführt werden, wenn du über die Eigenschaft TopIndex direkt setzt (ListBox.TopIndex := x) und nicht, wenn du per Tastatur oder Maus scrollst...

Also schreiben wir ein OnScroll-Event für die ListBox:
Delphi-Quellcode:
unit ListBoxEx;

interface

uses
  Messages, Classes, StdCtrls;

type
  TListBoxEx = class(TListBox)
  private
    FOnScroll: TScrollEvent;
    procedure WMScroll(var Message: TWMScroll); message WM_VSCROLL;
  published
    property OnScroll: TScrollEvent read FOnSCroll write FOnScroll;
  end;

  procedure Register;

implementation

procedure TListBoxEx.WMScroll(var Message: TWMScroll);
var
  ScrollPos: Integer;
begin
  inherited;
  ScrollPos := Message.Pos;
  if Assigned(FOnScroll) then
    if TScrollCode(Message.ScrollCode) in [scLineUp, scLineDown,
     scPageUp, scPageDown, scPosition, scTop, scBottom] then
      FOnScroll(Self, TScrollCode(Message.ScrollCode), ScrollPos);
end;

procedure Register;
begin
  RegisterComponents('Beispiele', [TListBoxEx]);
end;

end.
Im Menü unter Komponente/Komponente installieren wählst du diese Unit aus und installierst sie.
Dann hast du in der Komponentenleiste auf dem Reiter Beispiele eine neue Komponente (ListBoxEx).

MfG
Stevie

P.S. Hier im Forum findest du genug zum Thema Komponenten-Entwicklung, wenn du dich damit näher befassen willst.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat