Seite 1 von 2
#Vorschlag: #PB_Auto
Verfasst: 14.03.2006 17:00
von AND51
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?
Verfasst: 14.03.2006 17:03
von ts-soft
Zur Laufzeit ist es nicht sinnvoll, aber als Option in einem Visuell-Designer ist sowas sinnvoll einsetzbar.
Verfasst: 14.03.2006 17:07
von AND51
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! 
Verfasst: 14.03.2006 17:13
von NicTheQuick
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.
Verfasst: 14.03.2006 17:23
von AND51
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...
Verfasst: 14.03.2006 19:33
von Sven
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
Verfasst: 14.03.2006 20:31
von AND51
@ 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).
Verfasst: 14.03.2006 21:50
von DarkDragon

Wozu haben wir einen VD?
Verfasst: 15.03.2006 11:24
von Konne
Dann schreib ddir halt ein progamm das ausmisst wie breit ein text ist und die zahl gibst du dann ein. Wenn du languagesupport haben willst solltest du aber eh immer mehr platzt einplanen als du vielleicht im deutschen braucht.
Verfasst: 15.03.2006 14:03
von Sven
>>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