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
          Administrator

            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.