Что нового

_GUICtrlListView_FindText + поиск на полное соответстие

saavaage

Знающий
Сообщения
171
Репутация
17
Есть пример в справочнике. Я его немного переделал под вопрос:

Код:
#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>

Opt('MustDeclareVars', 1)

$Debug_LV = False ; Check ClassName being passed to ListView functions, set to True and use a handle to another control to see it work

_Main()

Func _Main()
	Global $iI, $hListView

	; Create GUI
	GUICreate("ListView Find Text", 400, 300)
	$hListView = GUICtrlCreateListView("", 2, 2, 394, 268)
	GUISetState()

	; Add columns
	_GUICtrlListView_AddColumn($hListView, "Items", 100)

	; Add items
	_GUICtrlListView_BeginUpdate($hListView)
	For $iI = 1 To 49
		_GUICtrlListView_AddItem($hListView, "Item " & $iI)
	Next
	_GUICtrlListView_AddItem($hListView, "Target item")
	_GUICtrlListView_AddItem($hListView, "Target")
	For $iI = 52 To 100
		_GUICtrlListView_AddItem($hListView, "Item " & $iI)
	Next
	_GUICtrlListView_EndUpdate($hListView)

	; Search for target item
	$iI = _GUICtrlListView_FindText($hListView, "tArGeT")
	MsgBox(4160, "Information", "Target Item Index: " & $iI)
	_GUICtrlListView_EnsureVisible($hListView, $iI)

	; Loop until user exits
	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE
	GUIDelete()
EndFunc   ;==>_Main


Суть проблемы:
указанная в заголовке функция ищет первый по порядку item, содержащий текст "tArGeT" и возвращает его индекс. Мне необходимо, чтобы функция искала item, с полным соответсвием. Т.е. поиск именно на наличие только текста "tArGeT", остальные варианты (например, "tArGeT1111", "2222tArGeT", "tArGeT item", т.д.) не принимались во внимание (считались уникальными).

Извиняюсь за некоторый сумбур

PS система XPSp3 Rus
 
Автор
S

saavaage

Знающий
Сообщения
171
Репутация
17
Как временное решение проблемы, делаю через заключение в [....]. Т.е код тогда преобразуется в следующий:

Код:
#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>

Opt('MustDeclareVars', 1)

$Debug_LV = False ; Check ClassName being passed to ListView functions, set to True and use a handle to another control to see it work

_Main()

Func _Main()
    Global $iI, $hListView

    ; Create GUI
    GUICreate("ListView Find Text", 400, 300)
    $hListView = GUICtrlCreateListView("", 2, 2, 394, 268)
    GUISetState()

    ; Add columns
    _GUICtrlListView_AddColumn($hListView, "Items", 100)

    ; Add items
    _GUICtrlListView_BeginUpdate($hListView)
    For $iI = 1 To 49
        _GUICtrlListView_AddItem($hListView, "Item " & $iI)
    Next
    _GUICtrlListView_AddItem($hListView, "[Target item]")
    _GUICtrlListView_AddItem($hListView, "[Target]")
    For $iI = 52 To 100
        _GUICtrlListView_AddItem($hListView, "Item " & $iI)
    Next
    _GUICtrlListView_EndUpdate($hListView)

    ; Search for target item
    $iI = _GUICtrlListView_FindText($hListView, "[tArGeT]")
    MsgBox(4160, "Information", "Target Item Index: " & $iI)
    _GUICtrlListView_EnsureVisible($hListView, $iI)

    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
EndFunc   ;==>_Main

В этом случае все ищется корректно, но уж больно напрягают лишние символы...

PS просто делаю небольшую программку для племянника - словарик иностранных слов - и необходимо при создании/редактировании конкретного словаря проверять есть ли уже такое слово в базе...
 
Автор
S

saavaage

Знающий
Сообщения
171
Репутация
17
Тема решена! :smile:
 
Верх