Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi [Demo] Schwenkfenster (TCustomPanningWindow) (https://www.delphipraxis.net/154359-%5Bdemo%5D-schwenkfenster-tcustompanningwindow.html)

WladiD 8. Sep 2010 10:54


[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:
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

blackfin 8. Sep 2010 10:56

AW: [Demo] Schwenkfenster (TCustomPanningWindow)
 
Stylisch! :thumb:

mkinzler 8. Sep 2010 11:02

AW: [Demo] Schwenkfenster (TCustomPanningWindow)
 
Hast du vor, die Komponente zu Veröffentlichen?

WladiD 8. Sep 2010 11:28

AW: [Demo] Schwenkfenster (TCustomPanningWindow)
 
Zitat:

Zitat von mkinzler (Beitrag 1048164)
Hast du vor, die Komponente zu Veröffentlichen?

Hallo mkinzler,

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

himitsu 8. Sep 2010 11:32

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.

blackfin 8. Sep 2010 11:34

AW: [Demo] Schwenkfenster (TCustomPanningWindow)
 
Zitat:

Aktuell haben wir (anscheinend) nur die Demo (EXE) und Links zu nötigen Komponenten, aber nicht deine Klasse.
Der hat's versteckt :

Zitat:

Um diesen Post nicht unnötig in die Länge zu ziehen, habe ich meine Implementierung der TCustomPanningWindow-Klasse als Source im TMemo in die Demo-EXE eingebunden: einfach nach rechts unten scrollen.
:)

stahli 8. Sep 2010 11:36

AW: [Demo] Schwenkfenster (TCustomPanningWindow)
 
Echt cool :thumb:
Muss man sich mal merken, falls es mal an einer Stelle nützlich sein kann.

WladiD 8. Sep 2010 12:49

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

mkinzler 8. Sep 2010 12:50

AW: [Demo] Schwenkfenster (TCustomPanningWindow)
 
Man kann auch die Quelldateien (Pas) direkt anhängen oder in ein Archiv verpacken

himitsu 8. Sep 2010 12:56

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 01:31 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz