Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » GUICtrlCreateListView - отмена выделения

Ответить
Настройки темы
GUICtrlCreateListView - отмена выделения

Старожил


Сообщения: 350
Благодарности: 35


Конфигурация

Профиль | Отправить PM | Цитировать


Приветствую, возможно ли сделать так, чтобы при нажатии на пункт элемент и элементы всей строки не выделялись (синим фоном) ?

Отправлено: 12:38, 09-11-2018

 

Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3030
Благодарности: 997

Профиль | Сайт | Отправить PM | Цитировать


Возможно.
Нужно отслеживать системные сообщения о выделений (фокус).

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community


Отправлено: 19:53, 10-11-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 350
Благодарности: 35

Профиль | Отправить PM | Цитировать


Creat0R, Это через WM_COMMAND ? Если ДА-без него никак?

Отправлено: 11:48, 12-11-2018 | #3


Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3030
Благодарности: 997

Профиль | Сайт | Отправить PM | Цитировать


-TRM-,
Код: Выделить весь код
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>

Global $hListView

GUICreate("WM_NOTIFY Demo", 400, 300)
$hListView = GUICtrlCreateListView("", 2, 2, 394, 268)

_GUICtrlListView_SetColumnWidth($hListView, 0, 90)
_GUICtrlListView_AddColumn($hListView, "Items", 100)
_GUICtrlListView_AddItem($hListView, "Item 1")
_GUICtrlListView_AddItem($hListView, "Item 2")
_GUICtrlListView_AddItem($hListView, "Item 3")

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState()

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
	Local $hWndFrom, $iCode, $tNMHDR, $hWndListView
	
	$hWndListView = $hListView
	
	If Not IsHWnd($hListView) Then
		$hWndListView = GUICtrlGetHandle($hListView)
	EndIf
	
	$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
	
	$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
	$iCode = DllStructGetData($tNMHDR, "Code")
	
	Switch $hWndFrom
		Case $hWndListView
			Switch $iCode
				Case $LVN_ITEMCHANGING; An item is changing
					;Return True; prevent the change
					;Return False; allow the change
					Return 1
				Case $LVN_BEGINDRAG, $LVN_BEGINRDRAG ;A drag-and-drop operation involving the left/right mouse button is being initiated
					Return 1
			EndSwitch
	EndSwitch
	
	Return $GUI_RUNDEFMSG
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community


Отправлено: 02:19, 13-11-2018 | #4


Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3030
Благодарности: 997

Профиль | Сайт | Отправить PM | Цитировать


Цитата -TRM-:
без него никак? »
Можно использовать GUICtrlSetState($hListView, $GUI_DISABLE), но тогда будет видно что элемент неактивный.
Или так:

Код: Выделить весь код
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>

Global $hListView

GUICreate("UnSelect", 400, 300)
$hListView = GUICtrlCreateListView("", 2, 2, 394, 268)

_GUICtrlListView_SetColumnWidth($hListView, 0, 90)
_GUICtrlListView_AddColumn($hListView, "Items", 100)
_GUICtrlListView_AddItem($hListView, "Item 1")
_GUICtrlListView_AddItem($hListView, "Item 2")
_GUICtrlListView_AddItem($hListView, "Item 3")

GUISetState()
AdlibRegister('_UnSelect_LV', 10)

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Func _UnSelect_LV()
    _GUICtrlListView_SetItemSelected($hListView, -1, False, True)
EndFunc
но и тут не всё идеально, будет заметно выделение на долю секунды.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community


Отправлено: 04:06, 03-03-2019 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » GUICtrlCreateListView - отмена выделения

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
GUICtrlCreateListView - убрать рамку -TRM- AutoIt 1 18-09-2018 11:43
Убрать гор. полосу прокрутки в GUICtrlCreateListView morgan1991 AutoIt 3 26-11-2010 04:38
Темы и Стили - Изменение выделения в контекстном меню Xakepzloy Оформление Windows 10 / 8 / 7 / Vista 8 12-11-2010 20:28
[решено] Как получить индекс текущего элемента GUICtrlCreateListView malev AutoIt 5 20-10-2009 10:35
Проблемы с прямоугольником выделения. AnGel_of_Death Microsoft Windows 2000/XP 7 28-05-2006 07:27




 
Переход