Что нового

Снять выделение со строки в ListBox

Jotun

Новичок
Сообщения
31
Репутация
0
Как сделать так, чтобы при клике на пустом месте в ListBox снималось выделение с его элемента, или при повторном клике на ту-же самую строку?
Я написал функцию, но мне кажется должно быть что-то попроще :smile:

Код:
#include <GUIConstantsEx.au3>
#include <ListBoxConstants.au3>
Global $CurChar = -1, $ListClicks = 0
Opt ( "GUIOnEventMode", 1 ) 
$CharList = GUICtrlCreateList ( "", 210,50,150,300, $GUI_SS_DEFAULT_LIST + $LBS_DISABLENOSCROLL + BitNOT($LBS_SORT) + $LBS_NOTIFY )
GUICtrlSetOnEvent ( $CharList, "ClickOnCharList" )

Func ClickOnCharList ()
	Local $pos = GUICtrlSendMsg ( $CharList, $LB_GETCURSEL, 0, 0 )
	If $pos >= 0 And $CurChar = $pos And $ListClicks = 0 Then
		GUICtrlSendMsg ( $CharList, $LB_SETCURSEL, -1, 0 )
		$ListClicks = 1
	Else
		$ListClicks = 0
	EndIf
	$CurChar = $pos
EndFunc
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Вот вариант :
Код:
#include <GUIConstantsEx.au3>
#include <ListBoxConstants.au3>

Global $i_DefInd=1
Opt ( "GUIOnEventMode", 1 ) 

GUICreate("")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

$CharList = GUICtrlCreateList ( "", 0,0,400,400, $GUI_SS_DEFAULT_LIST + $LBS_DISABLENOSCROLL + BitNOT($LBS_SORT) + $LBS_NOTIFY )
GUICtrlSetOnEvent ( $CharList, "ClickOnCharList" )

GUICtrlSetData(-1, 'Пункт 1|Пункт 2|Пункт 3|Текст', 'Пункт 2')

GUISetState()

While 1
	Sleep(100)
WEnd
	
Func ClickOnCharList()
	$iIndex=GUICtrlSendMsg($CharList, $LB_GETCURSEL, 0, 0)
	If $i_DefInd=$iIndex Then
		GUICtrlSendMsg ( $CharList, $LB_SETCURSEL, -1, 0 )
		$i_DefInd=-1
	Else
		$i_DefInd=$iIndex
	EndIf
EndFunc
	
Func _Exit()
	Exit
EndFunc


Кстати, разве трудно было выложить работоспособный пример ?
Зачем заставлять других делать лишние телодвижения ?
 
Автор
J

Jotun

Новичок
Сообщения
31
Репутация
0
gregaz сказал(а):
Кстати, разве трудно было выложить работоспособный пример ?
Зачем заставлять других делать лишние телодвижения ?

Ок, учту на будущее. Просто я думал что есть способ не делать это при помощи доп. функции, что может это выставляется где-то в стилях или в настройках.

Ваш пример выглядит более рациональным :smile:
 
Автор
J

Jotun

Новичок
Сообщения
31
Репутация
0
Я знал что такое не может быть предусмотренно :smile:

ListBoxConstants.au3

Global Const $LBS_MULTIPLESEL = 0x00000008 ; Turns string selection on or off each time the user clicks a string
 
Верх