Hallo alle zusammen,
einigen von Euch dürfte die Schwenk-Funktion, die durch klicken des Mausrads ausgelöst wird, aus Browsern bekannt sein. Ob sie nun sinnvoll ist oder nicht ist Geschmackssache, ich für meinen Teil finde sie bei langen Listen nützlich um sich einen Überblick zu verschaffen, ohne dabei das
Rad zum glühen zu bringen.
Jedenfalls wollte ich soetwas selbst in meinem Programm einbauen und bin per Zufall auf die Eigenschaft TMouse.PanningWindow, TMouse.PanningWindowClass und die abstrakte Klasse TCustomPanningWindow der
VCL (Delphi 2010) gestossen. Super, dachte ich mir und wollte ein paar Beispiele ansehen, die diese Klasse implementieren und verwenden. Doch Google hat nichts brauchbares finden können. "Learn by try and error" war also angesagt.
Nach einigen Stunden war das erste Erfolgserlebnis da und wenig später eine (für mich) brauchbare Lösung, die ich Euch hier als Demo präsentieren möchte.
TPannningWindow-Demo.7z
PanningWindow - Unit
PanningWindow.pas
Verwendung
Theoretisch können damit alle TControl-Objekte geschwenkt werden, die horizontale und/oder vertikale Standard-Scrollbalken verwenden. Dafür muss lediglich der gewünschten Instanz das Element [csPannable] an die Eigenschaft TControl.ControlStyle hinzugefügt werden. Der Eigenschaft Mouse.PanningWindowClass muss zuvor die spezifische Klasse zugewiesen werden.
Delphi-Quellcode:
implementation
uses
PanningWindow;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Mouse.PanningWindowClass:=TPanningWindow;
// Wenn es etwas zu scrollen gibt...
Form1.ControlStyle:=Form1.ControlStyle + [csPannable];
// hier weitere Komponenten, die scrollbar sind nach dem
// Schema Control.ControlStyle:=Control.ControlStyle + [csPannable]
end;
Voraussetzungen
Funktionsfähig ab Delphi 2009 (wegen anonymen Methoden).
Die PanningWindow-
Unit verwendet folgende Third-Party-Units, die alle OpenSource sind:
mfg