ListBox/Edit-Limit

  • Ich will in einer ListBox oder einem Edit ein Maximum an 600px an Zeichen stellen... standardmäßig lässt sich aber nur die Scrollreichweite bzw. das Maximum an Zeichen definieren...
    Schriftart ist Trebuchet MS, normal, 10px und nach den 600px soll automatisch ein Zeilenumbruch kommen... ne Idee?

  • Hallo mipez,

    ich verstehe den Sinn deines Vorhabens nicht, was bringt es ein ListBoxItem (GUICtrlCreateList ) nach 60 Zeichen umzubrechen?
    Für die maximale Spaltenbreite (wird nicht umgebrochen) kannst du

    [autoit]

    _GUICtrlListBox_SetColumnWidth

    [/autoit]

    verwenden

    mfg autoBert

  • Naja, hab ne Website, allerdings will dort das Festlegen der maximalen Breite nicht so recht.
    Deswegen will ich in nem Edit/ListBox den Text automatisch auf 600px kürzen, mit Umbruch halt, damit ich nich beim Groben andauernd zwischen Website und Text wechseln muss.

    Problem ist halt, dass unterschiedliche Zeichen unterschiedlich breit sind...

  • Deswegen will ich in nem Edit/ListBox den Text automatisch auf 600px kürzen, mit Umbruch halt


    Hallo mipez,

    da musst Du dem Edit etwas unter die Arme greifen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <Array.au3>
    $Text = "Lorem ipsum dolor sit amet consectetuer tempor accumsan wisi a condimentum. " & _
    "Lobortis magna id elit orci convallis In velit et elit pellentesque. " & _
    "At vel pretium vitae augue tortor lorem iaculis consectetuer faucibus vel. " & _
    "Nec interdum tortor tincidunt eget et euismod Donec augue Curabitur Vestibulum. " & _
    "Non penatibus magnis urna Pellentesque ante odio ac suscipit nunc nunc. Odio."
    GUICreate("Edit", 600, 600)
    ; Edit mit 600 Pixeln Breite und Zeilenumbruch
    $idEdit = GUICtrlCreateEdit("", 0, 0, 600, 600, $ES_MULTILINE)
    GUICtrlSetFont(-1, 10, -1, -1, "Trebuchet MS")
    GUICtrlSetData(-1, $Text)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    ; 1. Versuch ----------------------------------------------------------------------------
    $Lines = GUICtrlSendMsg($idEdit, $EM_GETLINECOUNT, 0, 0) ; das ist nur die halbe Wahrheit
    $Edit = GUICtrlRead($idEdit)
    $aEdit = StringSplit($Edit, @CRLF, 1)
    _ArrayDisplay($aEdit, "1. Versuch: " & $Lines & " Zeile(n)")

    [/autoit] [autoit][/autoit] [autoit]

    ; 2. Versuch ----------------------------------------------------------------------------
    GUICtrlSendMsg($idEdit, $EM_FMTLINES, 1, 0) ; erzeugt Zeilenumbrüche im Format @CR@CRLF
    $Lines = GUICtrlSendMsg($idEdit, $EM_GETLINECOUNT, 0, 0) ; jetzt stimmt es
    $Edit = GUICtrlRead($idEdit)
    $aEdit = StringSplit($Edit, @CR & @CRLF, 1)
    _ArrayDisplay($aEdit, "2. Versuch: " & $Lines & " Zeile(n)")

    [/autoit] [autoit][/autoit] [autoit]

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    [/autoit] [autoit][/autoit] [autoit]

    Exit

    [/autoit]