![]() |
[Demo] Schwenkfenster (TCustomPanningWindow)
Liste der Anhänge anzeigen (Anzahl: 5)
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. Anhang 32053 PanningWindow - Unit Anhang 32057 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:
Voraussetzungen
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; Funktionsfähig ab Delphi 2009 (wegen anonymen Methoden). Die PanningWindow-Unit verwendet folgende Third-Party-Units, die alle OpenSource sind:
mfg |
AW: [Demo] Schwenkfenster (TCustomPanningWindow)
Stylisch! :thumb:
|
AW: [Demo] Schwenkfenster (TCustomPanningWindow)
Hast du vor, die Komponente zu Veröffentlichen?
|
AW: [Demo] Schwenkfenster (TCustomPanningWindow)
Zitat:
eine richtige Komponente ist es ja nicht, sondern nur eine Klasse, die an Mouse.PanningWindowClass zugewiesen wird. Um daraus eine Komponente zu machen müsste man einen Wrapper schreiben was an sich kein Problem wäre, wenn TControl.ControlStyles published wäre...man müsste so oder so per handgeschriebem Code den gewünschten Komponenten ControlStyle+[csPannable] hinzufügen, wodurch die TPanningWindow als put&play-Komponente obsolet wird. Oder der Wrapper müsste eine Liste verwalten mit Komponenten, die scrollbar sein sollen, was jedoch wiederrum ein unnötiger Verwaltungsaufwand wäre...hmmm...ich glaube, ich lasse es vorerst als eine Single-Class-Lösung. mfg |
AW: [Demo] Schwenkfenster (TCustomPanningWindow)
mkinzler meinte auch mehr, hast du vor es so zu veröffentlich, daß es auch Andere in eigenen Programmen verwenden können?
Aktuell haben wir (anscheinend) nur die Demo (EXE) und Links zu nötigen Komponenten, aber nicht deine Klasse. |
AW: [Demo] Schwenkfenster (TCustomPanningWindow)
Zitat:
Zitat:
|
AW: [Demo] Schwenkfenster (TCustomPanningWindow)
Echt cool :thumb:
Muss man sich mal merken, falls es mal an einer Stelle nützlich sein kann. |
AW: [Demo] Schwenkfenster (TCustomPanningWindow)
Sorry Leute,
ich habe mkinzler wohl missverstanden. Der Eröffnungspost wurde soeben überarbeitet und enthält jetzt die Unit und Code-Schnipsel für dessen Verwendung. Ich galube hier irgendwo gelesen zu haben, dass große Quelltexte in Beiträgen unerwünscht sind, daher habe ich sie zuvor in die Demo-Exe eingefügt. mfg |
AW: [Demo] Schwenkfenster (TCustomPanningWindow)
Man kann auch die Quelldateien (Pas) direkt anhängen oder in ein Archiv verpacken
|
AW: [Demo] Schwenkfenster (TCustomPanningWindow)
@WladiD: Es ist nur unpraktisch, wenn "große Quelltexte" mitten im Beitrag stehn.
Als Anhang machen sie sich besser. Also das Memo in der EXE ... "unten rechts" war nichts. Man muß in der Mitte suchen und dort war ich beim Testen wohl nicht vorbeigekommen. :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz