sterro_sasha
Новичок
- Сообщения
- 45
- Репутация
- 1
Здравствуйте. Помогите пожалуйста, этот пример демонстрирует возможность выделение указанного слова. Все работает, но он выделяет только одно слово, даже если в тексте их два (test).
Кажется нужно искать повторно слово с точки выделения предыдущего и если оно есть - выделять цветом. А если нет - завершать работу функции. Алгоритм кажется такой? Но как это сделать?
Кажется нужно искать повторно слово с точки выделения предыдущего и если оно есть - выделять цветом. А если нет - завершать работу функции. Алгоритм кажется такой? Но как это сделать?
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIRichEdit.au3>
Global $sLast_Search = ""
$hGUI = GUICreate("Example (" & StringTrimRight(@ScriptName, 4) & ")", 320, 350, -1, -1)
$hRichEdit = _GUICtrlRichEdit_Create($hGUI, "test and test and", 10, 10, 300, 220, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
$nSearch_Bttn = GUICtrlCreateButton("Search", 140, 310, 70, 30)
GUISetState()
While 1
$iMsg = GUIGetMsg()
Switch $iMsg
Case $GUI_EVENT_CLOSE
GUIDelete()
Exit
Case $nSearch_Bttn
$sLast_Search = InputBox("Search in RichEdit", "Enter word: test", $sLast_Search, "", -1, -1, Default, Default, 0, $hGUI)
If @error Or $sLast_Search = "" Then ContinueLoop
_GUICtrlRichEdit_FindAndSelText($hRichEdit, $sLast_Search)
EndSwitch
WEnd
Func _GUICtrlRichEdit_FindAndSelText($hRichEdit, $sText)
If $sText = "" Then
Return SetError(1)
EndIf
Local $iAnchor, $iActive
_GUICtrlRichEdit_SetSel($hRichEdit, 0, 0)
$iAnchor = _GUICtrlRichEdit_FindText($hRichEdit, $sText)
$iActive = $iAnchor + StringLen($sText)
Return _GUICtrlRichEdit_SetSel($hRichEdit, $iAnchor, $iActive)
EndFunc