#Vorschlag: #PB_Auto
#Vorschlag: #PB_Auto
Hallo!
Ich weiß nicht so recht wohin mit diesem Beitrag, in der Hilfe habe ich nichts gefunden.
Wie wäre es, wenn es zum Beispiel für das TextGadget) das zusätzliche Flasg #PB_Auto geben würde? Da ssoll bewirken, dass das gadget vom Compiler oder zur Laufzeit automatisch auf die nötigste Größe verkleinert wird, sodass aber der Inhalt noch sichtbar ist.
Warum? Mich nervt das immer, wenn ich eine GUI erstellen möchte und jedesmal die Maße des TextGaadgets ausprobieren muss. Entweder ist es zu dünn oder zu breit und überlappt andere Gadgets.
Vielleicht kann es dieses Flag, sollte es umgesetzt werden, auch für andere Gadgets geben, beispielsweise ImageGadget(), um damit (ohne die beiden speziellen Funktionen nutzen zu müssen), das Gadget auf die richtige Größe zu bringen.
Oder für ButtonImageGadget(). Oder aber auch für Checkboxen und Optionsfelder, damit diese auf die Mindestlänge gekürzt werden, sodass sie nebenstehende und nachfolgende Elemente nicht überlappen.
Findet ihr die Idee gut oder meint ihr, dss sie auch umgesetzt werden könnte?
Ich weiß nicht so recht wohin mit diesem Beitrag, in der Hilfe habe ich nichts gefunden.
Wie wäre es, wenn es zum Beispiel für das TextGadget) das zusätzliche Flasg #PB_Auto geben würde? Da ssoll bewirken, dass das gadget vom Compiler oder zur Laufzeit automatisch auf die nötigste Größe verkleinert wird, sodass aber der Inhalt noch sichtbar ist.
Warum? Mich nervt das immer, wenn ich eine GUI erstellen möchte und jedesmal die Maße des TextGaadgets ausprobieren muss. Entweder ist es zu dünn oder zu breit und überlappt andere Gadgets.
Vielleicht kann es dieses Flag, sollte es umgesetzt werden, auch für andere Gadgets geben, beispielsweise ImageGadget(), um damit (ohne die beiden speziellen Funktionen nutzen zu müssen), das Gadget auf die richtige Größe zu bringen.
Oder für ButtonImageGadget(). Oder aber auch für Checkboxen und Optionsfelder, damit diese auf die Mindestlänge gekürzt werden, sodass sie nebenstehende und nachfolgende Elemente nicht überlappen.
Findet ihr die Idee gut oder meint ihr, dss sie auch umgesetzt werden könnte?
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
- 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
Zur Laufzeit ist es nicht sinnvoll, aber als Option in einem Visuell-Designer ist sowas sinnvoll einsetzbar.
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Ob zur Laufzeit oder nicht, da habe ich keine genauen Informationen drüber, was man da alles machen kann, denn PB soll ja möglichst optimal und shcnell laufen.
Wir man dann das Flag auch manuell setzen können, wenn man (so wie ich) die GUI auch noch mit der Hand erstellt?
AND51 - Hier läuft die GUI nicht vom Band,
hier schafft man noch mit Herz und Hand!
Wir man dann das Flag auch manuell setzen können, wenn man (so wie ich) die GUI auch noch mit der Hand erstellt?
AND51 - Hier läuft die GUI nicht vom Band,
hier schafft man noch mit Herz und Hand!

PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Ich finde, dass das mit dem Flag nicht machbar ist.
Wenn du nicht willst, dass ein anderes Gadget ein TextGadget überlappen
soll, dann musst du dieses Gadget auch selbst so positionieren, dass es
passt. Das Textgadget ändert nicht die Position eines anderen Gadgets.
Außerdem kann man den Text in einem TextGadget auch nochmal
ändern, sodass es sich ja wiede resizen müsste. Das sind sicherlich nur
zwei von mehreren Problemen.
Also ich sehe es als unnütz an, so ein Flag einzubauen.
Wenn du nicht willst, dass ein anderes Gadget ein TextGadget überlappen
soll, dann musst du dieses Gadget auch selbst so positionieren, dass es
passt. Das Textgadget ändert nicht die Position eines anderen Gadgets.
Außerdem kann man den Text in einem TextGadget auch nochmal
ändern, sodass es sich ja wiede resizen müsste. Das sind sicherlich nur
zwei von mehreren Problemen.
Also ich sehe es als unnütz an, so ein Flag einzubauen.
OK, du hast Recht, das man den Text auch nachträglich ändern kann. Aber ich kann ja schließlich auch ein eigens positioniertes Gadget den Text davon ändern, und wenn dieser zu lang ist, dann wird der Text auch abgeschnitten.
Es geht ja in erster Linie darum, dass bei der Erstkompilierung die Maße (nicht die Position!) des Gadgets stimmen. Der User muss sich im klaren darüber sein, dass ein nachträgliches Ändern mit diesem Risiko verbunden ist. Er muss sich aber auch im klaren darüber sein, wenn er das Flag nicht verwendet. Oder man baut den Vorschlag so ein, dass man es nicht als zusätzliches Flag nehmen kann, wie ich erst dachte, sondern man kann es statt Width und Height einsetzen.
Auf diese Weise wäre ein nachträgliches, automatisches ändern der Größe mitttels ResizeGadget() möglich.
Außerdem, NickTheQuick, denke ich dabei ja nicht nur an TextGadgets, sondern auch an ImageGadgets, Checkboxe, HyperLinkGadgets, Optionsfelder, ComboBoxen...
Es geht ja in erster Linie darum, dass bei der Erstkompilierung die Maße (nicht die Position!) des Gadgets stimmen. Der User muss sich im klaren darüber sein, dass ein nachträgliches Ändern mit diesem Risiko verbunden ist. Er muss sich aber auch im klaren darüber sein, wenn er das Flag nicht verwendet. Oder man baut den Vorschlag so ein, dass man es nicht als zusätzliches Flag nehmen kann, wie ich erst dachte, sondern man kann es statt Width und Height einsetzen.
Auf diese Weise wäre ein nachträgliches, automatisches ändern der Größe mitttels ResizeGadget() möglich.
Außerdem, NickTheQuick, denke ich dabei ja nicht nur an TextGadgets, sondern auch an ImageGadgets, Checkboxe, HyperLinkGadgets, Optionsfelder, ComboBoxen...
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
Das geht sofort schief, wenn das Programm auf einem anderen Rechner mit anderen Schriftarten läuft. Um ein Gadget wirklich genau abzustimmen, müßtest Du die Schriftart und -größe mit festlegen und hoffen, dass die auf anderen Rechnern auch vorhanden ist. Also lieber immer großzügig dimensionieren...
Sven
Sven
@ Sven: Dann darf es aber auch die Funktion TextLen() nicht geben; diese Funktion, im Bereich 2DDrawing, ermittelt, wie breit ein Text ist und berücksichtigt dabei die aktuell benutzte Schriftart!
Und wenn es jetzt #PB_Auto gäbe, dann braucht sie nicht nur gucken, wie breit die längste Zeile des Textes ist, sondern guckt auch, wie hoch das gadget dann sein muss, einfach so: Höhe der Schriftart * Anzahl der im Text enthaltenen Chr(10) (Zeilenumbrüche).
Und wenn es jetzt #PB_Auto gäbe, dann braucht sie nicht nur gucken, wie breit die längste Zeile des Textes ist, sondern guckt auch, wie hoch das gadget dann sein muss, einfach so: Höhe der Schriftart * Anzahl der im Text enthaltenen Chr(10) (Zeilenumbrüche).
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
>>Dann darf es aber auch die Funktion TextLen() nicht geben
Was hat die denn damit zu tun? Freilich kannst Du vor jedem GadgetBefehl ein StartDrawing aufrufen und die Länge des Textes ermitteln, um dann die Gadgets entsprechend anzupassen.
Kann aber erstens trotzdem schiefgehen, und zweitens: Was machst Du, wenn der Text wirklich zu breit ist? Alle anderen Gadgets verschieben? Das Fenster breiter machen, wenn's nicht reicht?
TextLen() ist wohl eher dazu da, Text in Grafik ordentlich (z.B. zentriert oder rechtsbündig) zu platzieren.
Sven
Was hat die denn damit zu tun? Freilich kannst Du vor jedem GadgetBefehl ein StartDrawing aufrufen und die Länge des Textes ermitteln, um dann die Gadgets entsprechend anzupassen.
Kann aber erstens trotzdem schiefgehen, und zweitens: Was machst Du, wenn der Text wirklich zu breit ist? Alle anderen Gadgets verschieben? Das Fenster breiter machen, wenn's nicht reicht?
TextLen() ist wohl eher dazu da, Text in Grafik ordentlich (z.B. zentriert oder rechtsbündig) zu platzieren.
Sven