Fit Content

Startseite Foren Deutsches LiveCode-Forum Fit Content

Ansicht von 3 Antwort-Themen
  • Autor
    Beiträge
    • #13684
      gfz
      Teilnehmer

      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

    • #13686
      gfz
      Teilnehmer

      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

    • #13693
      Klaus Major
      Verwalter

      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

    • #13697
      gfz
      Teilnehmer

      Wieder einmal vielen Dank Klaus für diesen 1A Tipp! Damit klappt es so wie ich mir das vorgestellt hatte.
      liebe Grüße,
      Georg

Ansicht von 3 Antwort-Themen
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.