Kapitel 9
Hinweis: Dies ist die vollständige deutsche Übersetzung des Kapitels. Codebeispiele sind sprachunabhängig gültig.
Benutzeroberflächen in Harbour: Von der Konsole bis zur modernen GUI
Harbour stammt aus der Welt der textbasierten Clipper-Anwendungen, hat sich jedoch weiterentwickelt und unterstützt heute moderne grafische Benutzeroberflächen (GUIs). Nachfolgend findest du einen Überblick über die verfügbaren Schichten und Bibliotheken für die GUI-Entwicklung.
Graphic Terminal (GT): Die Basis der Portabilität
Die **GT-Funktionsfamilie** von Harbour stellt eine Abstraktionsschicht für die Textausgabe bereit. Statt direkt in die Windows-Konsole oder ein Linux-Terminal zu schreiben, übernimmt Harbour über GT die Plattformanpassung automatisch.
Wichtige Merkmale:
- Plattformunabhängigkeit: Ein und derselbe Code läuft unter Windows, Linux und macOS.
- Basisfunktionen: Cursorpositionierung (
SetPos()
), Textausgabe (DispOut()
), Farbanpassung (SetColor()
), Rahmen zeichnen (DispBox()
).
- Treiberunterstützung: z. B.
GTWIN
(Windows), GTCGI
(Web), GTCurses
(Unix-Terminals).
Kommandozeileninterfaces (CLI)
Die einfachste Form der Benutzerinteraktion mit Harbour ist über die Kommandozeile (CLI). Ideal für Tools, Batch-Prozesse und schlanke Programme.
Nützliche Funktionen:
QOut()
, QQOut()
: Textausgabe
Inkey()
: Einzelne Tastendrücke erfassen
Accept
, Input
: Eingaben vom Benutzer entgegennehmen
Wait
: Programm wartet auf Tastendruck
In Kombination mit GT lassen sich damit interaktive Textoberflächen bauen.
Beigesteuerte GUI-Bibliotheken: GTWVG, HwGUI und hbqt
Für grafische Benutzeroberflächen nutzt Harbour Community-Bibliotheken, darunter:
- GTWVG (GT for Windows Virtual Graphics): Baut grafisch anmutende Oberflächen über die Textmodus-GT-Schicht. Unterstützt Fenster, Buttons, Menüs, Mausbedienung – ideal zur Modernisierung alter Clipper-Apps.
- HwGUI (Harbour Windows GUI): Eine ausgereifte Bibliothek zur Entwicklung **nativ grafischer Windows-Anwendungen** mit Formularen, Buttons, Textfeldern, Tabellen etc. Nutzt ein ereignisbasiertes Programmiermodell – Standard in modernen Desktop-GUIs.
- hbqt (Harbour Binding für Qt): Bindung an das Qt-Framework – leistungsfähig, plattformübergreifend (Windows, Linux, macOS). Unterstützt Multimedia, Netzwerke, Datenbanken, moderne UI – alles steuerbar aus Harbour-Code.
GUIs basieren auf dem Prinzip der **Ereignissteuerung** – statt linearem Codefluss wartet die Anwendung auf Benutzeraktionen (z. B. Mausklicks).
- Ereignisschleife (Event Loop): Zentrale Schleife, die Eingaben des Systems abfängt und gezielt an Event-Handler weitergibt.
- Callbacks und Codeblöcke: Bestimmte Funktionen oder Codeblöcke werden einem Steuerelement (z. B. Button) zugewiesen und beim jeweiligen Ereignis ausgeführt.
- Formulardesigner: Für HwGUI und hbqt existieren Drag&Drop-Werkzeuge, die den GUI-Code automatisch generieren – ideal für die visuelle Entwicklung komplexer Oberflächen.