Startseite › Foren › Deutsches LiveCode-Forum › Fit Content
- Dieses Thema hat 3 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 5 Jahren, 8 Monaten von gfz.
-
AutorBeiträge
-
-
März 21, 2019 um 23:50 Uhr #13684
Hallo liebe LCerInnen!
Bei Feldern gibt es beim Property-Inspector für Höhe und Weite einen Button zu klicken, mit dem die Weite bzw. Breite des Feldes an den aktuellen Inhalt angepasst wird. Gibt es per Skript ebenfalls die Möglichkeit? Ich konnte im Dictionary keine entsprechende Funktion finden – muss man wohl selber Hand anlegen. Entspricht ein Pixel der selben Größe wie ein Point? Ich nehme an, dass man diese Funktionalität unter Einbeziehung der Feldeigenschaften: „the textHeight“ bzw. „the textSize“ programmieren könnte. Wie spielen da noch die Eigenschaften „the spaceAbove/Below“ mit?
Hat das von Euch schon jemand versucht und Erfahrungen damit gesammelt?
Freue mich über Feedback
LG
Georg -
März 22, 2019 um 00:43 Uhr #13686
Habe da ein kleines Beispiel probiert, das aber nicht macht was ich mir erwartet hätte.
zwei Felder: myField, myText
ein Button: addmyText2myField
die 3 Elemente zu einer Gruppe zusammengefasst und hier die beiden Skripts:
im Button:on mouseUp if fld "myText" is not empty then if fld "myField" is not empty then put the text of fld "myField" into tTemp put tTemp & return & the text of fld "myText" into fld "myField" changeFldHeight else put the text of fld "myText" into fld "myField" changeFldHeight end if end if end mouseUp
und in der Gruppe (habe zuvor im Feld „myField“ mit on textChanged versucht auf Änderungen zu reagieren, aber die Message wird scheinbar nicht ausgelöst!?):
command changeFldHeight put the topLeft of fld "myField" into tTL put the number of lines of fld "myField" into tN put return & tN after msg put the textHeight of fld "myField" into tTxHg put 0 into tNewHg if tN > 1 then repeat with x = 1 to tN put the textSize of line(x) of fld "myField" into tTxSz put the spaceBelow of line(x) of fld "myField" into tSpBw put the spaceAbove of line(x) of fld "myField" into tSpAb add (tTxSz + tSpBw + tSpAb) to tNewHg put return & "Neue Höhe: " & tNewHg & " nach Zeile: " & x after msg end repeat else put the textSize of line 1 of fld "myField" into tTxSz put the spaceBelow of line 1 of fld "myField" into tSpBw put the spaceAbove of line 1 of fld "myField" into tSpAb add (tTxSz + tSpBw + tSpAb) to tNewHg put return & "Neue Höhe: " & tNewHg & " nach Zeile 1." after msg end if --set the height of fld "myField" to tNewHg --set the topLeft of fld "myField" to tTL end changeFldHeight
die neue Zeilenhöhe bleibt immer bei 0?! Sieht jemand von Euch was ich falsch gemacht habe?
Wieder zähle ich auf euer Feedback und eure Unterstützung.
Gruß
Georg -
März 22, 2019 um 11:44 Uhr #13693
Hi Georg,
Du kannst es einfacher haben, sofern ich Dich richtig verstanden habe:
... set the height of fld xyz to the FORMATTEDHEIGHT of fld xyz set the width of fld xyz to the FORMATTEDWIDTH of fld xyz ...
🙂
Hinweis:
Ändern der Höhe und Breite ändert sich auch THE LOC des Objektes.
Also dafür auch Sorge tragen bei Bedarf, was Du aber offensichtlich
hiermit schon angedacht hattest:... put the topLeft of fld "myField" into tTL ...
Gruß
Klaus
-
März 22, 2019 um 18:07 Uhr #13697
Wieder einmal vielen Dank Klaus für diesen 1A Tipp! Damit klappt es so wie ich mir das vorgestellt hatte.
liebe Grüße,
Georg
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.