Zeileumbruch in GUICtrl-Edit

  • Hallo Leute,

    ich hab folgendes Problem:

    Ein Edit-Bereich der Text enthält soll durch Knopfdruck einen Zeilenumbruch erhalten (als neue Zeile am Fensterende und keinen horizontalen Scrollbalken).

    Hab schon alles mögliche probiert, aber ich kriegs einfach irgendwie nicht hin.

    Hier mein Code:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    Opt("GUICloseOnESC", 0)

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

    Global $text = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."
    Local $NewStyle

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

    $gui = GUICreate("Edit mit Zeilenumbruch", 300, 300)
    GUISetOnEvent($GUI_EVENT_CLOSE,"_Ende")
    $EditText = GUICtrlCreateEdit($text, 10, 10, 280, 150, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN, $WS_VSCROLL, $WS_HSCROLL))
    $btnToggle = GUICtrlCreateButton("Switch", 50, 180, 200, 100)
    GUICtrlSetOnEvent(-1, "zeilenumbruch")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func zeilenumbruch()
    ConsoleWrite("> zeilenumbruch()" & @CRLF)
    If $NewStyle = False Then
    GUICtrlSetStyle($EditText, BitOR($ES_AUTOVSCROLL, $WS_VSCROLL, $WS_CLIPSIBLINGS, $ES_WANTRETURN)) ; Zeilenumbruch angescchaltet
    ConsoleWrite("- Zeilenumbruch AN" & @CRLF)
    $NewStyle = True
    Else
    GUICtrlSetStyle($EditText, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN, $WS_VSCROLL, $WS_HSCROLL)) ; Zeilenumbruch ausgeschaltet
    ConsoleWrite("- Zeilenumbruch AUS" & @CRLF)
    $NewStyle = False
    EndIf
    EndFunc ;==>zeilenumbruch

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

    Func _Ende()
    Exit
    EndFunc

    [/autoit]


    Was mache ich falsch?

    Einmal editiert, zuletzt von UdeF (24. Juli 2012 um 12:50)

  • Hallo UdeF,

    das funktioniert leider nicht so wie du denkst.

    Das Edit erhält scheinbar immer zu Beginn seine Eigenschaften für einen weichen Zeilenumbruch. Deshalb würde mir nur der Trick mit zwei unterschiedlich formatierten Editfelder und der wechselnden Anzeige einfallen.

    Spoiler anzeigen
    [autoit]

    Opt("GUIOnEventMode", 1)
    Opt("GUICloseOnESC", 0)

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

    Global $text = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."
    Local $NewStyle

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

    $gui = GUICreate("Edit mit Zeilenumbruch", 300, 300)
    GUISetOnEvent(-3,"_Ende")
    $EditText1 = GUICtrlCreateEdit($text, 10, 10, 280, 150, 0x00100080)
    $EditText2 = GUICtrlCreateEdit($text, 10, 10, 280, 150, 0x00201000)
    GUICtrlSetState($EditText2, 0x0020)
    $btnToggle = GUICtrlCreateButton("Switch", 50, 180, 200, 100)
    GUICtrlSetOnEvent(-1, "zeilenumbruch")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func zeilenumbruch()
    ConsoleWrite("> zeilenumbruch()" & @CRLF)
    If $NewStyle = False Then
    GUICtrlSetState($EditText1, 0x0020)
    GUICtrlSetState($EditText2, 0x0010)
    ConsoleWrite("- Zeilenumbruch AN" & @CRLF)
    $NewStyle = True
    Else
    GUICtrlSetState($EditText1, 0x0010)
    GUICtrlSetState($EditText2, 0x0020)
    ConsoleWrite("- Zeilenumbruch AUS" & @CRLF)
    $NewStyle = False
    EndIf
    EndFunc ;==>zeilenumbruch

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

    Func _Ende()
    Exit
    EndFunc

    [/autoit]

    Der Strahleman 8)

    Wenn denn alles so einfach wäre wie

    [autoit]

    "Autoit"

    [/autoit]

    meine UDFs
    Math2

    Wichtige Threads
    Math2

    Einmal editiert, zuletzt von Strahleman (24. Juli 2012 um 08:09)

  • BugFix : Hallo. Ja da hast du Recht. Ich versuche nur immer die Programme so klein wie möglich zu halten und nehme bei nur ein paar Konstanten lieber die Style-Werte. Aber wenn ich Zeit habe schreibe ich die Bedeutungen der Style-Werte als Kommentar daneben. ...Und manchmal vergesse ich es aber auch ;)

    Wenn denn alles so einfach wäre wie

    [autoit]

    "Autoit"

    [/autoit]

    meine UDFs
    Math2

    Wichtige Threads
    Math2

  • Danke. Die Idee ist gut und hat mich auf eine andere Idee gebracht. Statt zwei Editfeldern, benutze ich einfach GUICtrlDelete($EditText1) und erstelle es neu. Hat den Vorteil, dass die Variable $EditText1 gleich bleibt.

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <ButtonConstants.au3> ; $BS_MULTILINE
    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    Opt("GUICloseOnESC", 0)

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

    Global $text = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."
    Local $NewStyle

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

    $gui = GUICreate("Edit mit Zeilenumbruch", 300, 300)
    GUISetOnEvent(-3,"_Ende")
    $EditText1 = GUICtrlCreateEdit($text, 10, 10, 280, 150, BitOR($ES_AUTOVSCROLL, $WS_VSCROLL)) ;Zeilenumbruch aus
    $btnToggle = GUICtrlCreateButton("Switch", 50, 180, 200, 100)
    GUICtrlSetOnEvent(-1, "zeilenumbruch")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func zeilenumbruch()
    ConsoleWrite("> zeilenumbruch()" & @CRLF)
    If $NewStyle = False Then
    GUICtrlDelete($EditText1)
    $EditText1 = GUICtrlCreateEdit($text, 10, 10, 280, 150, BitOR($ES_AUTOHSCROLL, $ES_AUTOVSCROLL, $WS_HSCROLL,$WS_VSCROLL, $ES_MULTILINE))
    ConsoleWrite("- Zeilenumbruch AN" & @CRLF)
    $NewStyle = True
    Else
    GUICtrlDelete($EditText1)
    $EditText1 = GUICtrlCreateEdit($text, 10, 10, 280, 150, BitOR($ES_AUTOVSCROLL, $WS_VSCROLL))
    ConsoleWrite("- Zeilenumbruch AUS" & @CRLF)
    $NewStyle = False
    EndIf
    EndFunc ;==>zeilenumbruch

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

    Func _Ende()
    Exit
    EndFunc

    [/autoit]