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
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <String.au3>
#include <GuiRichEdit.au3>
#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 ###
While 1
Color()
$Read = GetWord($List1)
GUICtrlSetData($Label1,$Read[0]&" | "&$Read[1]&"-"&$Read[2])
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
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
Func GetWord($EditBox)
$Sel = _GUICtrlRichEdit_GetSel($EditBox)
$String = _GUICtrlRichEdit_GetText($EditBox)&" "
Local $RETURN[3]
[/autoit] [autoit][/autoit] [autoit]$S1 = ""
$S2 = ""
$i = $Sel[0]
$x = 0
$y = 0
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
$i = $Sel[0]+1
While 1
$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
Func RGB ($red, $green, $blue)
Return BitOR ( $red, BitShift ($green, -8), BitShift ($blue, -16) ) ; COLORREF / BGR
EndFunc