Normale
VCL-Komponenten sind auf
OpenGl-Formularen nicht mehr sichtbar und oft will man (für Spiele) auch nicht das Standardaussehen, sondern ein eigenes.
Hierfür habe ich glComponents geschrieben.
Das Projekt bietet ein Bitmap-Fontsystem und die meisten Standard-Komponenten für
OpenGl.
Die Komponenten wären im Einzelnen:
- TglLabel
- TglPanel
- TglButton
- TglEdit
- TglCheckbox
- TglRadioButton
- TglImage
Besonderheiten sind:
- Animierte Statusübergänge der Komponenten
- Skinnbar
- Image und Button unterstützen nicht POT-Bilder Geschwindigkeitsverlust und auch auf alten Rechnern
Hinweis: Es wird nur Y-Ursprung oben unterstützt, Standard für
OpenGl ist jedoch unten
So funktioniert das ganze Perfekt zusammen mit
Fear2d
Die Verwendung von glComponents erfolgt ähnlich wie die manuelle Initialisierung von
VCL-Komponenten, es müssen allerdings einige Besonderheiten beachtet werden.
Zuerst muss eine zentrale Verwaltungsklasse vom Typ TglManager erstellt werden. Deren Konstruktor wird als Parameter entweder Breite und Höhe des Formulars oder direkt das Formular übergeben. Optional kann auch noch der Standardskin und das Verzeichnis angegeben werden.
Nun können einzelne Komponenten erstellt werden. Hier sind die Parameter des Konstruktors entweder nur die Verwaltungsklasse oder eine übergeordnete Komponente.
Die meisten Eigenschaften der Komponenten orientieren sich an der
VCL, eine Ausnahme bildet jedoch Color:
Hier werden
OpenGl-typisch die Rot-, Grün-, Blau- und Alphawerte (Transparenz) einzeln in Single-Variablen mit dem Wertebereich 0 - 1 gespeichert. Normale Delphi-TColor-Werte können über die Methode FromTColor benutzt werden.
Damit die Eingaben nun auch bei den Komponenten ankommen, müssen mehrere Arten von Ereignissen an die Verwaltungsklasse weitergeleitet werden.
Das sind im einzelnen:
- MouseDown
- MouseUp
- MouseMove
- KeyDown
- KeyUp
In der Ereignisbehandlung müssen nun die gleich benannten Methoden der Verwaltungsklasse aufgerufen werden, die in der Regel auch die selben Parameterlisten haben.
Zusätzlich muss noch die Windows-Botschaft CM_DIALOGKEY abgefangen werden (die zugehörige Ereignisbehandlung muss dann leer sein), damit auch auf die Tab-Taste reagiert wird.
Die gesamte
GUI kann hier inklusive eines Demo-Projekts runtergeladen werden:
http://wilson.kilu.de/counter/load.php?id=3 (583kb)
Lizenz: 2-clause-BSD
Aktuelle Version: 0.1
Benötigte Units:
Fear2d: Nur für die Demo benötigt, Initialisierung kann auch manuell erfolgen
dglOpenGl: Sollte eigentlich auch mit anderen OpenGl-Implementationen für Delphi laufen, habe ich aber nicht getestet
glBitmap