[RichEdit]Bestimmte Wörter beim schreiben färben hilfe

  • Hi,
    ich habe mich mal an eine Funktion gesetzt die es ermöglichen soll bestimme Wörter wärend dem schreiben einfärben zu lassen. Das Problem was ich habe ist nun, das ich ja den Text makieren muss um ihn einzufärben. Dies führt zu unschönen Ergebnissen siehe Script:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <String.au3>
    #include <GuiRichEdit.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("RichEdit", 534, 303, 192, 124)
    $List1 = _GUICtrlRichEdit_Create($Form1,"", 4, 4, 525, 266)
    _GUICtrlRichEdit_SetText($List1,"Das ist ein Haus."&@CRLF&"Das ein Auto."&@CRLF&"Und dies bin ich.")
    $Label1 = GUICtrlCreateLabel("", 4, 276, 520, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    Color()
    $Read = GetWord($List1)
    GUICtrlSetData($Label1,$Read[0]&" | "&$Read[1]&"-"&$Read[2])
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func Color()
    $Read = GetWord($List1)
    Switch $Read[0]
    Case "Das"
    _GUICtrlRichEdit_SetSel($List1,$Read[1],$Read[2])
    _GUICtrlRichEdit_SetCharColor($List1,RGB(255,0,0))
    _GUICtrlRichEdit_Deselect($List1)
    Case "ist"
    _GUICtrlRichEdit_SetSel($List1,$Read[1],$Read[2])
    _GUICtrlRichEdit_SetCharColor($List1,RGB(0,255,0))
    _GUICtrlRichEdit_Deselect($List1)
    Case "ein"
    _GUICtrlRichEdit_SetSel($List1,$Read[1],$Read[2])
    _GUICtrlRichEdit_SetCharColor($List1,RGB(0,0,255))
    _GUICtrlRichEdit_Deselect($List1)
    Case "Haus"
    _GUICtrlRichEdit_SetSel($List1,$Read[1],$Read[2])
    _GUICtrlRichEdit_SetCharColor($List1,RGB(255,255,0))
    _GUICtrlRichEdit_Deselect($List1)
    EndSwitch
    EndFunc

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

    Func GetWord($EditBox)
    $Sel = _GUICtrlRichEdit_GetSel($EditBox)
    $String = _GUICtrlRichEdit_GetText($EditBox)&" "

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

    Local $RETURN[3]

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

    $S1 = ""
    $S2 = ""
    $i = $Sel[0]

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

    $x = 0
    $y = 0

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

    While 1

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

    $L = StringRight(StringLeft($String,$i),1)
    If $L <> " " and $L <> @CRLF and $L <> "" and $L <> @CR and $L <> @LF Then
    $S1 &= $L
    $i = $i-1
    $y = $y+1
    Else
    $RETURN[1] = $Sel[0]-$y
    ExitLoop
    EndIf
    WEnd

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

    $i = $Sel[0]+1
    While 1

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

    $L = StringRight(StringLeft($String,$i),1)
    If $L <> " " and $L <> @CRLF and $L <> "" and $L <> @CR and $L <> @LF Then
    $S2 &= $L
    $i = $i+1
    $x = $x+1
    Else
    $RETURN[2] = $Sel[0]+$x
    ExitLoop
    EndIf
    WEnd
    $RETURN[0] = _StringReverse($S1)&$S2
    Return $RETURN
    EndFunc

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

    Func RGB ($red, $green, $blue)
    Return BitOR ( $red, BitShift ($green, -8), BitShift ($blue, -16) ) ; COLORREF / BGR
    EndFunc

    [/autoit]
  • Oh...
    Nun...
    Wenn du ein AutoIt-Script schreibst, in dem Standard-Editor (SciTE), und dann zum Beispiel "GUICreate" eingibst, dann wird das doch blau, oder?
    Genau sowas kannst du mit der UDF auch basteln.

    Zitat von SciLexer-UDF Autor


    Title says enough (For those who don't know, scilexer is an editing control, like the one SciTE uses)

    Zitat von SciLexer-UDF Autor (Übersetzt)


    Der Titel sagt genug (Für die, die es nicht wissen: SciLexer ist ein Edit-Control, wie das, was SciTE benutzt.)


    Das ganze nennt man eigentlich Syntax-Highlighting, lässt sich hier aber auch für deine Zwecke benutzen.

    lg chess

    PS: Oder du machst es unsauber und haust einfach ein Sleep(100) in die Hauptschleife. :whistling:

  • Ah...
    danke ich werde mir das ganze mal anschauen und versuchen zu verstehen XD
    Nochwas:
    Mir fehlt anscheinend eine Plugins.au3 die ich aber nirgendwo auftreiben kann !?

    EDIT:
    Ich danke dir geht alles und ich spare mir ne menge arbeit :)