GUI-Erstellung... best practices?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Qnode
Beiträge: 84
Registriert: 19.07.2018 20:41
Computerausstattung: i5, 16GB RAM, Win10, PureBasic 6.00 (Windows - x64)

GUI-Erstellung... best practices?

Beitrag von Qnode »

Hey,

in den letzten Tagen habe ich mich mal an den verschiedenen Möglichkeiten der Gui-Programmierung unter PureBasic versucht. Erste Ergebnisse habe ich schon mal erzielt, allerdings ist es eine Sache, bestimmte Codes technisch nachzuvollziehen und eine völlig andere, diese Möglichkeiten auch sinnvoll einzusetzen. Ich habe bisher folgendes rausgefunden:

1) Es gibt Requester

Soweit so klar, damit habe ich Messageboxen und Standarddialoge zur Verfügung.

2) Es gibt Formulare

Okay, damit kann man schon Gui's programmieren, ist gut in die IDE integriert. Leider sind sie nicht größenveränderbar und es gibt auch nicht sowas wie Layoutmanager dafür (vermutlich, weil das ohne Größenveränderung äußerst wenig Sinn macht).

3) Es gibt Dialoge
Schön, da habe ich ein SizeGadget und somit ein skalierbares Fenster und auch Container (VBox, HBox) dazu, die damit was anfangen können. Es gibt den Dialog Designer von HeX0R (finde ich cool!) und ansonsten muss man sich ggf. in XML einfummeln und die ausgezeichnete PureBasic-Referenz in Anspruch nehmen um damit sinnvolle Dinge zu machen. Habe auch schon den Wrapper von PureLust gesehen... damit scheint man auch viele schicke Dinge anfangen zu können.

4) Es gibt PureVision
Habe schon anhand der alten Posts gemerkt, dass das Programm hier... differenziert gesehen wird (z.B. weil es stark auf Bibliotheken aufsetzt). Ich bin damit beim ersten Rumfummeln mit der Testversion nicht besonders klar gekommen (habe mir allerdings auch noch nicht allzu viel Mühe gegeben). Bin mir nicht sicher, ob das jetzt ein Aufsatz auf die PureBasic Dialog oder ein vollkommen eigenständiges Ding ist. Versteht mich nicht falsch: es geht mir nicht um die 25 €, die das Programm kostet. Ich müsste mir aber was Produktives davon versprechen.

Meine Frage: Was fangt ihr mit diesen ganzen Möglichkeiten an. Programmiert ihr komplexe Anwendungen ausschließlich mit Formularen oder benutzt ihr lieber Dialoge? Mischt ihr das? Wann sollte man was benutzen? Bei welchen Szenarien spielen Formulare, Dialog oder meinetwegen auch PureVision ihre Stärken aus? Momentan fehlt mir noch die Fantasie um das zu überblicken. Ein erster Gedankenansatz wäre, für komplexe Haupt- oder Datenformulare eher Dialoge zu verwenden, für einfachere Subforms eher Formulare zu benutzen und wenn es was Vorgefertigtes gibt, z.B. für ne Meldung oder das Öffnen/Speichern von Dateien gibt, dann muss man das Rad nicht neu erfinden, sondern nimmt den passenden Requester.
Aber ob das jetzt so die schlaue Vorgehensweise ist?

Hoffe, dass ich damit kein Flamewar auslöse, aber nachdem, was ich bisher darüber finden konnte, seid ihr mit dem Thema recht friedlich umgegangen :mrgreen:

Edit: Ach so, habe ich fast vergessen: gibt es noch weitere Varianten der Gui-Erstellung in PureBasic?
Andesdaf
Moderator
Beiträge: 2660
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: GUI-Erstellung... best practices?

Beitrag von Andesdaf »

Ich benutze inzwischen eigentlich nur noch die Dialog-Funktionen, vor allem wegen der Flexibilität
und weil ich mich nicht mehr um pixelgenaue Anordnung der einzelnen Elemente kümmern muss.
Allerdings gibt es einige Einschränkungen, die für eine effiziente Verwendung noch etwas eigenen
Überbau erfordern (ButtonImages, ListIcon-Spalten, ComboBox-Einträge, Fonts etc.) oder unter Umständen
auch gar nicht zu lösen sind (Erweiterung/Verkleinerung von Fensterbereichen).

Mit dem Formulareditor habe ich vor einiger Zeit hin und wieder rumgespielt, dessen Codeorganisation hat mir
aber nicht gefallen und er war mir auch etwas zu fehlerbehaftet (kann inzwischen besser geworden sein).
Irgendwann zwischendurch hatte ich die Formulare extra gespeichert und dann den Gadget-Code bei jeder Änderung
in der Hauptprojekt kopiert, war mir auf Dauer zu umständlich.

PureVision habe ich nie ausprobiert, ich wollte bei den PB-Bordmitteln bleiben. Und als weitere Variante kann man natürlich
auch alles komplett selbst per Hand mit den PB-Befehlen machen.

Ich würde dir raten, innerhalb eines Projektes eine Variante durchgängig zu nutzen, Requester natürlich ausgeschlossen,
da solltest du die vorgehaltenen Lösungen schon der Einfachheit halber nutzen.
Win11 x64 | PB 6.00 (x64)
Benutzeravatar
mk-soft
Beiträge: 3701
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: GUI-Erstellung... best practices?

Beitrag von mk-soft »

Ich verwende den Formdesigner von Purebasic und erstelle verschiedene Form Dateien. FormMain, FormDialog.

Das erstellen von den Code für die Eventverarbeitung vom Formdesigner schalte ich vorher aus. Dieser gefällt mir auch nicht.

Den erforderlichen Code für die Eventverarbeitung und die Korrektur von den Form-Code lasse ich von meinen Tool "EventDesigner" erledigen. <- Siehe Signatur
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
HeX0R
Beiträge: 2959
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: GUI-Erstellung... best practices?

Beitrag von HeX0R »

Dialoge sind ne schöne Sache, aber meist muss ich doch für ein Hauptfenster Standard-Windows (oder in Deiner Sprache: Formulare) nehmen.
Sobald Du eine StatusBar, ToolBoxButtons oder auch nur Main-Menüs haben möchtest, stösst Du relativ schnell an die Grenzen des derzeit (mit PB eigenen Mitteln) Möglichen.
Mit dem eingebauten Form-Designer komme ich nicht klar, gelegentlich bastle ich mir schnell nen Fenster damit, aber irgendwie verhält der sich ständig merkwürdig.
Meistens baue ich die Fenster zu Fuß auf.
Bei Dialogen wollte ich das nicht, weil ich persönlich mit XML auf Kriegsfuß stehe, daher hatte ich den Designer mal zusammengewurstelt.

Requester versuche ich wenn möglich gar nicht zu nutzen, sie stören i.d.R. den Workflow, ich zeige Meldungen lieger in einem Log-Editor an.
Benutzeravatar
Imhotheb
Beiträge: 192
Registriert: 10.10.2014 13:14
Computerausstattung: Intel 8086, 640 KB RAM, Hercules Video Adapter, 2 x 5 1/4" 360kb Floppy, MS-DOS 3
Wohnort: Wolfenbüttel

Re: GUI-Erstellung... best practices?

Beitrag von Imhotheb »

Muss ich auch mal meinen Senf ...

Ich benutze eigentlich hauptsächlich den Formulardesigner. Aber ohne Eventbehandlung außer der Resizefunktion. Allerdings schreibe ich eine zusätzliche Prozedur um das Fenster zu öffnen, darin enthalten sind die Änderungen die ich noch möchte. z.B. kann der Formdesigner kein Icon/Bild aus der DataSection einbinden. So erstelle ich dann auch die Toolbar manuell. Außerdem arbeite ich fast nur noch mit BindGadget/BindEvent, was auch in dieser Funktion festgelegt wird. Die ResizeProzedure des Formdesigner kapsel ich in einer eigenen Procedure um eigene Anpassungen machen zu können.

Alles in allem kann ich so schnell Änderungen am Formular machen und trotzdem "manuelle" Eingriffe realisieren.
weil einfach einfach einfach ist ... mach' ich es anders
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: GUI-Erstellung... best practices?

Beitrag von ts-soft »

Es kommt natürlich auf die Art des Programms an, aber im Allgemeinen:
Ein Hauptfenster wird zu Fuß erstellt, enthält sowieso meist nur GUI-Elemente, deren Größe sich aus der aktuellen Größe des Hauptfensters, ListView, Toolbar, Statusbar, Edit usw. ergibt.

Für den Rest, wie Einstellungen etc pp, werden Dialoge genutzt.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Qnode
Beiträge: 84
Registriert: 19.07.2018 20:41
Computerausstattung: i5, 16GB RAM, Win10, PureBasic 6.00 (Windows - x64)

Re: GUI-Erstellung... best practices?

Beitrag von Qnode »

Hey,

vielen Dank, das ist ja ein ganzer Strauß von Tipps und Infos :D

Interessant finde ich, dass die Mehrheit der Kommentatoren auf die eingebauten Standard-Windows setzt (@HeXOR: Ich habe sie Formulare genannt, weil sie in der IDE auch so heißen :wink: ). Ich habe heute dazu ein Tutorial durchgearbeitet, dass ich auf PureArea gefunden habe (sehr gut!). Die Forms wirken vielleicht heute auf viele eine wenig "Old School", weil in anderen Programmierumgebungen mit XAML, JavaFX oder HTML/CSS rumgeschraubt wird. Das ist meiner Meinung nach die Linie, die in PureBasic eher über Dialoge realisiert wird. Aber vielleicht wird ja das ganze Fenster-Rumgezerre auch überschätzt und für den User ist die Form halt so, wie sie ist (man hat halt nur die Sorge, dass sie unter verschiedenen Auflösungen dann womöglich nicht passt).

Den Event-Designer muss ich mir auch nochmal unbedingt ansehen, alleine schon um auch zu sehen, wie erfahrene Programmierer hier ihren Code organisieren (Codeorganisation: das wird auch noch ein Studierfach für mich... aber eine neue Sprache lernt man nicht in ein paar Tagen).

Im Prinzip spricht ja auch nichts dagegen, seine Fenster händisch zu erstellen. Man muss zwar immer wieder eine Menge Parameter angeben (x, y, Breiten, Höhe usw.) aber ich finde es extrem hilfreich, dass in der Statuszeile der IDE die Syntax des Befehls eingeblendet wird.

Ich glaube, das mit der GUI-Programmierung macht in PureBasic Spaß. Habe bisher mit der PureBasic-Testversion rumgespielt, mir aber heute die Vollversion bestellt.

Ich glaube, hier möchte ich bleiben <) . Hauptsache, Ihr seid nicht zu schnell genervt von Anfängerfragen (ich benutze auch vorher die Forumssuche, versprochen)
Antworten