Texte formatieren

  • Hallo,

    folgendes Problem:

    Ich habe ein Editfeld.
    Wie kann ich per Klick die Formatierungsoptionen anwenden.

    z.B. Text zentrieren, Blocksatz, links, rechts, fett...

    Bei GuictrlCreateEdit kann man ja z.B. $ES_Center mit übergeben.

    Aber wie macht das das am besten per Buttons?

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $GuiTextbox = GUICreate("Text", 327, 245, 346, 262, BitOR($WS_MINIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_BORDER,$WS_CLIPSIBLINGS))
    GUISetIcon("D:\003.ico")
    $btnok = GUICtrlCreateButton("zentrieren", 129, 203, 75, 25, $WS_GROUP)
    $btnCancel = GUICtrlCreateButton("&Cancel", 210, 203, 75, 25, $WS_GROUP)
    $Edit1 = GUICtrlCreateEdit("", 16, 16, 289, 177, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN,$WS_VSCROLL))
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    GUICtrlSetResizing(-1, $GUI_DOCKAUTO)
    GUISetState(@SW_SHOW)

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

    ;~ Global Const $ES_LEFT = 0
    ;~ Global Const $ES_CENTER = 1
    ;~ Global Const $ES_RIGHT = 2

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

    $Center = $ES_Center = 1
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $btnok
    GUICtrlSetState($edit1,$ES_Center)
    Case $btnCancel
    EndSwitch
    WEnd

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

    Ist es auch möglich einen Text
    innerhalb des Editfeldes unterschiedlich zu bearbeiten.

    z.B. ein Wort Fett, unterstrichen evtl. Farben...

    Geht das überhaupt?

    Liebe Grüße
    Ilse ;)

    Einmal editiert, zuletzt von Ilse (14. August 2012 um 12:48)

  • Hi Ilse,

    ich hätte den geschriebenen Text in eine Hilfsvariable geschrieben, dann das alte Edit gelöscht, ein neues erstellt mit den neuen Styles und den Inhalt der Hilfsvariable wieder eingefügt:

    Spoiler anzeigen
    [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Button1
    $temp = GUICtrlRead($Edit1)
    GUICtrlDelete($Edit1)
    $Edit1 = GUICtrlCreateEdit("", 8, 8, 289, 225, $ES_Center)
    GUICtrlSetData($Edit1,$temp)
    EndSwitch
    WEnd

    [/autoit]

    Gruß
    x0r

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

  • Hallo zusammen,
    @ x0r
    merci für die schnelle Hilfe.

    misterspeed
    Jeden Tag was neues.
    Das war ein Super Tip!

    Für alle anderen...
    Hab in der Hilfe ein Beispiel gefunden,
    da kann man jeden markierten Text vergrößern, verkleinern...Super!

    Spoiler anzeigen
    [autoit]


    #AutoIt3Wrapper_Au3Check_Parameters= -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <GuiRichEdit.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Opt('MustDeclareVars', 1)

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

    Global $lblMsg, $hRichEdit

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

    Main()

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

    Func Main()
    Local $hGui, $iMsg, $btnDoIt
    $hGui = GUICreate("Example (" & StringTrimRight(@ScriptName,4) &")", 320, 350, -1, -1)
    $hRichEdit = _GUICtrlRichEdit_Create($hGui, "This is a test.", 10, 10, 300, 220, _
    BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    $lblMsg = GUICtrlCreateLabel("", 10, 235, 300, 60)
    $btnDoIt = GUICtrlCreateButton("Do it", 270, 310, 40, 30)
    GUISetState()

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

    _GUICtrlRichEdit_SetSel($hRichEdit, 0, -1) ; select all

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

    While True
    $iMsg = GUIGetMsg()
    Select
    Case $iMsg = $GUI_EVENT_CLOSE
    GUIDelete()
    Exit
    Case $iMsg = $btnDoIt
    ChangeFontSize()
    EndSelect
    WEnd
    EndFunc ;==>Main

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

    Func ChangeFontSize()
    Local $av, $iOld, $iNew
    $av = _GuiCtrlRichEdit_GetFont($hRichEdit)
    $iOld = $av[0]
    _GuiCtrlRichEdit_ChangeFontSize($hRichEdit, 2)
    $av = _GuiCtrlRichEdit_GetFont($hRichEdit)
    $iNew = $av[0]
    Report("Was " & $iOld & " points; is now " & $iNew & " points")
    EndFunc ;==>ChangeFontSize

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

    Func Report($sMsg)
    GUICtrlSetData($lblMsg, $sMsg)
    EndFunc ;==>Report

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


    Liebe Grüße
    Ilse ;)