Seite 1 von 2

Eure Vorgehensweise / Grundsätze für GUIs unter PB ?

Verfasst: 13.10.2006 14:19
von dussel
Hallo,

bisher habe ich unter PB lediglich kleinere Tools auf Kommandozeile oder mit minimaler Oberfläche programmiert. Nun komme ich erstmalig in die Verlegenheit eine umfangreichere grafische Oberfläche in einem Fenster realisieren zu wollen. Dabei stosse ich auf grundsätzliche Fragen und Gedanken, über die ich mich gerne austauschen würde.

- Verseht Ihr jedes Gadget mit einer eindeutigen ID ? Oder nutzt Ihr ein Gadget gleich für mehrere Zwecke ?
- Wie löst Ihr die Anzeige bestimmter Gadgets und hiden der übrigen? Über eine "hide_all_gadgets()" und anschließendem einblenden der gewünschten?
- Wie identifiziert ihr bei einem resize des Window welche Gadgets in ihrer Größe angepasst werden müssen?
- Habt Ihr für diese grundsätzlichen Fragen ein gutes Framework?

Jetzt bin ich ja mal gespannt auf die Antworten :)

Verfasst: 13.10.2006 14:33
von AND51
Sicher verwenden wir eine eindeutige ID.

Ich merke mir aber nicht: 1 war das Menü, 45 war dieses TextGadget und 371 war das ListIcon...

Sieh dir mal Enumeration an! Damit kann man Konstantenpraktisch vordefinieren. Die setze ich dann statt der IDs ein.

Verfasst: 13.10.2006 14:45
von Kaeru Gaman
Enumeration...

wichtig ist vor allem, mit den nummern bei 0 anzufangen und fortlaufend zu numerieren (was Enum ja zur verfügung stellt)

bei Enum muss man eben drauf achten, dass man es nicht mehrmals verwendet,
ohne sie fortlaufen zu lassen und sich dann nummern überschneiden,
also, für mehrere aufzählungen von gadgets.

fenster und gadgets können afaik sich überschneidende nummernkreise haben.

---------------------
meistens zeigt man immer alle gadgets an, und disabled nur die, die nicht benötigt werden.
solltest du mehr platz brauchen, nimm lieber Panels oder extra-fenster,
als wild hin und her zu schalten, das tötet dein layout.

-----
wie auf resize reagiert wird, liegt vor allem an deinem grundlayout.
oft hat ein fenster eine hauptarbeitsfläche, und die wird als einziges mitresized.

Verfasst: 13.10.2006 14:49
von AND51
Schreibfehler gefixt, scheiß Browster... >_<

Wenn du neu in dem Bereich GUI einsteigst, empfehle ich dir z. B. gnozales PureRESIZE Lib, welche das Resizen von Gadgets automatisch übernimmt.

>fenster und gadgets können afaik sich überschneidende nummernkreise haben.
stimmt

>solltest du mehr platz brauchen, nimm lieber Panels oder extra-fenster
Oder ContainerGadgets() und ScrollareaGadgets().

Verfasst: 13.10.2006 14:56
von dussel
Sicher verwenden wir eine eindeutige ID.

Ich merke mir aber nicht: 1 war das Menü, 45 war dieses TextGadget und 371 war das ListIcon...

Sieh dir mal numeration an! Damit kann man Konstantenpraktisch vordefinieren. Die setze ich dann statt der IDs ein.
Das jedes Gadget eine eindeutige ID erfordert und sich diese über enumeration kompfortable erstellen lassen ist der Hilfe zu entnehmen. Hmmm... Vielleicht habe ich mich etwas missverständlich ausgedrückt und sollte es mit einem präziseren Beispiel verdeutlichen.

Nutzt du für leicht abweichende Zwecke in einer Anwendung das gleiche Gadged (eine ID) oder mehrere Gadgets? Beispielsweise ein ListIconGadget mit jeweils varierenden Spalten für unterschiedliche Ausgaben oder mehrere ListIconGadgets? Selbstverständlich angenommen das die ListIconGadgets nicht gleichzeitig dargestellt werden sollen. Die erste Variante hätte seinen Charm im geringeren Ressourcenverbrauch; die zweitere ist (soweit ich das überblicke) wesentlich einfacher zu programmieren.

Verfasst: 13.10.2006 15:12
von NicTheQuick
Ich würde die zweite Variante verwenden.

Außerdem kannst du bisher noch keine Spalten beim ListIconGadget löschen,
was ich persönlich aber ziemlich blöd finde. Den Namen der Spalten kann
man nachträglich auch nicht mehr ändern. Da hilft nur noch FreeGadget() und
ein neues erstellen.

Verfasst: 13.10.2006 16:48
von PMV
Also eine besonders große Anwendung mit größenveränderbarer
Oberfläche hab ich bisher so weit ich weis noch nicht erstellt. Aber so in
etwa, wie ich es machen würde ist in einem etwas kleinerem, im Forum
veröffentlichten Programm zu sehen. Habs extra für dich grad eben neu
hoch geladen ;-) .

Thread: PMVs AutoPicConverter

Als IDs verwende ich immer Variablen (#PB_Any), so kann einem nie
mals passieren, dass doch mal 2 Objekte die gleichen IDs haben. Als
Antworten auf die restlichen Fragen ist es einfacher, wenn du dir den
Coden oben anschaust :D ... allerdings ists schon was älter, somit noch
PB 3.94. Erlich gesagt weis ich auch garnicht mehr genau, wie ich's
damals gelöst hab :lol: .

MFG PMV

Verfasst: 13.10.2006 20:01
von mk-soft
Über die Aufteilung der IDs mache ich mir nicht den grossen Kopf.
Bei grösseren Projekten mit mehreren Gadget und Fenster nehme ich gleich den Visual Designer. Erstelle allerdings für jedes Fenster eine eigene Common Datei und generiere mir mit meinen Tool eine gemeinsame Common Datei.
Alle Events sind dann auch gleich vorbereit :allright:

Verfasst: 13.10.2006 23:51
von freak
NicTheQuick hat geschrieben:Ich würde die zweite Variante verwenden.

Außerdem kannst du bisher noch keine Spalten beim ListIconGadget löschen,
was ich persönlich aber ziemlich blöd finde. Den Namen der Spalten kann
man nachträglich auch nicht mehr ändern. Da hilft nur noch FreeGadget() und
ein neues erstellen.
Seit 3.90:
> - Added: RemoveGadgetColumn()

Seit 4.00:
> - Supports GetGadgetItemText(#Gadget, -1, 2) ; return header text for column 2
> - Supports SetGadgetItemText(#Gadget, -1, "New Text", 2) ; change header text for column 2

Verfasst: 16.10.2006 14:30
von dussel
Danke an alle !