Что нового

Выделение строчки (_GUICtrlListView_Create)

Dream-52

...
Сообщения
82
Репутация
1
Два часа просидел.Как выделить строчку по индексу?

Просто не получается вот что.
Выделил строчку,нажал кнопку - данные добавил в тот итем (это реализовал)
После всего - строчка снова выделенная.
Просто мне нужно,чтобы выделение строки не пропадало,ато потом думай,что я там делал...

а у меня после всего,выделение строки исчезает ..((

Если бы не
Код:
_GUICtrlListView_Create
- может быть бы и сам справился.А так.. принципиально не натив-функц,а именно
Код:
_GUICtrlListView_Create.


Код:
$hListView = _GUICtrlListView_Create($hGUI, "", 2, 23, 600, 300, BitOR($LVS_EDITLABELS, $LVS_REPORT))
$index = _GUICtrlListView_GetSelectedIndices($hListView)
; тут код дальше ....
 _GUICtrlListView_SetItemSelected($hListView,$index)

:whistle:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
_GUICtrlListView_GetSelectedIndices возвращает строковое значение (если второй параметр = False), поэтому значение нужно преобразовывать в числовое (после проверки удачности выполнения функций).

Код:
$index = _GUICtrlListView_GetSelectedIndices($hListView)
; тут код дальше ....
If $index <> '' Then $index = Number($index)
 _GUICtrlListView_SetItemSelected($hListView, $index)
 
Автор
D

Dream-52

...
Сообщения
82
Репутация
1
Код:
$index = _GUICtrlListView_GetSelectedIndices($hListView)


         		If $index <> '' Then $index = Number($index)
			_GUICtrlListView_SetItemSelected($hListView, $index)


Сделал как ты говорил,но после всего - все равно обратно не ставит выделение на строчку...(
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Tommy Dreams [?]
Сделал как ты говорил,но после всего - все равно обратно не ставит выделение на строчку.
Вот я тоже невнимательно смотрел...

Зачем же получать Index выделения чтобы потом снова выделить этот же пункт? :wacko:
Он выделен, и после нажатия на кнопку видимо сбрасывается фокус.

Вот так можно его восстановить:

Код:
#include <GUIConstantsEx.au3>
#include <GUIListView.au3>

$hGUI = GUICreate("ListView Set Focus", 400, 300)
$hListView = GUICtrlCreateListView("", 2, 2, 394, 268)
GUISetState()

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

; Add items
_GUICtrlListView_AddItem($hListView, "Item 1")
_GUICtrlListView_AddItem($hListView, "Item 2")
_GUICtrlListView_AddItem($hListView, "Item 3")

$nButton = GUICtrlCreateButton("Test", 20, 275, 70, 20)

While 1
	$nMsg = GUIGetMsg()

	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $nButton
			$index = _GUICtrlListView_GetSelectedIndices($hListView)
			If $index <> '' Then $index = Number($index)
            $sSelected = _GUICtrlListView_GetItemText($hListView, $index)
			MsgBox(64, 'Title', $sSelected)
			ControlFocus($hGUI, "", $hListView)
	EndSwitch
WEnd
 
Автор
D

Dream-52

...
Сообщения
82
Репутация
1
Cпасибо,выручил )))
Еще такой вопрос.
В чем разница между "нативными" ф-циями и _GUICtrlEdit_Create к примеру...хоть примерно.
Просто вот думаю,может ControlFocus не совсем в тему? ато это натив,а ..у меня все по ф-циям udf . Может есть ф-ция,..наподобии вот такого (сам придумал) _GUICtrlListView_ControlFocus() :whistle:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Давным давно, когда по земле ходили динозавры и в AutoIt не было GUI, добрый волшебник Gary Frost (в основном) написал несколько полезных UDF для поддержки графического интерфейса. Прошло несколько тысяч лет, AutoIt обзавелся полноценным GUI, а могучие UDF так и остались, только функции были переименованы. Но и по сей день без них практически не получается обойтись простым смертным юзерам.

Единственное замечание, создавать элементы все же лучше с помощью нативных функций, т.к. они поддерживаются AutoIt на внутреннем уровне. Например, если вы создадите что-нибудь с помощью GUICtrlCreate... функций на Tab, то эти элементы будут автоматически скрываться при переключении вкладок, в противном случае, вам придется это делать самостоятельно. Кроме того, GUIGetMsg() реагирует только на те элементы, которые были созданы с помощью нативных функций. В остальном, практически любые функции из UDF можно применять к нативным элементам.

Tommy Dreams сказал(а):
Просто вот думаю,может ControlFocus не совсем в тему? ато это натив,а ..у меня все по ф-циям udf . Может есть ф-ция,..наподобии вот такого (сам придумал) _GUICtrlListView_ControlFocus()

_WinAPI_SetFocus()
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Tommy Dreams [?]
может ControlFocus не совсем в тему?
В тему в тему, это как раз то что нужно в данном случае. И натив в этом случае выглядит так: GUICtrlSetState($hListView, $GUI_FOCUS)
 
Автор
D

Dream-52

...
Сообщения
82
Репутация
1
Yashied сказал(а):
Давным давно, когда по земле ходили динозавры и в AutoIt не было GUI, добрый волшебник Gary Frost (в основном) написал несколько полезных UDF для поддержки графического интерфейса. Прошло несколько тысяч лет, AutoIt обзавелся полноценным GUI, а могучие UDF так и остались, только функции были переименованы. Но и по сей день без них практически не получается обойтись простым смертным юзерам.

Единственное замечание, создавать элементы все же лучше с помощью нативных функций, т.к. они поддерживаются AutoIt на внутреннем уровне. Например, если вы создадите что-нибудь с помощью GUICtrlCreate... функций на Tab, то эти элементы будут автоматически скрываться при переключении вкладок, в противном случае, вам придется это делать самостоятельно. Кроме того, GUIGetMsg() реагирует только на те элементы, которые были созданы с помощью нативных функций. В остальном, практически любые функции из UDF можно применять к нативным элементам.

Tommy Dreams сказал(а):
Просто вот думаю,может ControlFocus не совсем в тему? ато это натив,а ..у меня все по ф-циям udf . Может есть ф-ция,..наподобии вот такого (сам придумал) _GUICtrlListView_ControlFocus()

_WinAPI_SetFocus()

Спасибо за интересное смс 8)
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Tommy Dreams

{OverQuoteWarn}
 
Верх