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

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

Ответить
Настройки темы
[решено] ListView-изменение цвета текста всей строки при выборе CHECKBOXES

Старожил


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


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

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


Приветствую ! Вопрос к профессионалам, скорее всего. Из просторов интернета накидал скрипт, но не могу понять как при выделении чекбокса изменять цвет строки.
Код: Выделить весь код
#include-once
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>

GUICreate("Как изменить цвет текста всей строки при выборе CHECKBOXES ?", 600, 600)
Global $ListView_TEST = GUICtrlCreateListView('', 100, 270, 400, 194, $LVS_SHOWSELALWAYS, $LVS_EX_FULLROWSELECT + $LVS_EX_CHECKBOXES + $WS_EX_CLIENTEDGE)
_GUICtrlListView_InsertColumn($ListView_TEST, 0, "Наименование 1", 200)
_GUICtrlListView_InsertColumn($ListView_TEST, 2, "Наименование 2", 200)
_GUICtrlListView_AddItem($ListView_TEST, 'Наименование 1-01', 0)
_GUICtrlListView_AddSubItem($ListView_TEST, 0, "Наименование 2-01", 1)
_GUICtrlListView_AddItem($ListView_TEST, 'Наименование 1-02', 1)
_GUICtrlListView_AddSubItem($ListView_TEST, 1, "Наименование 2-02", 1)
_GUICtrlListView_AddItem($ListView_TEST, 'Наименование 1-03', 2)
_GUICtrlListView_AddSubItem($ListView_TEST, 2, "Наименование 2-03", 1)
_GUICtrlListView_AddItem($ListView_TEST, 'Наименование 1-04', 3)
_GUICtrlListView_AddSubItem($ListView_TEST, 3, "Наименование 2-04", 1)

GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')
GUISetState()
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()

Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
	Local $tNMHDR, $iIDFrom, $iCode
	$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
	$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
	$iCode = DllStructGetData($tNMHDR, "Code")
	Switch $iIDFrom
		Case $ListView_TEST ; It is our ListView
			Switch $iCode
				Case $NM_CUSTOMDRAW
					Local $tNMLVCUSTOMDRAW = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam)
					Local $dwDrawStage = DllStructGetData($tNMLVCUSTOMDRAW, "dwDrawStage")

					Switch $dwDrawStage
						Case $CDDS_PREPAINT ; Before the paint cycle begins
							Return $CDRF_NOTIFYITEMDRAW
						Case $CDDS_ITEMPREPAINT ; Before painting an item
							Return $CDRF_NOTIFYSUBITEMDRAW ; Notify the parent window of any SUBITEM-related drawing operations

						Case BitOR($CDDS_ITEMPREPAINT, $CDDS_SUBITEM) ; Before painting a subitem
							Local $iItemParam = DllStructGetData($tNMLVCUSTOMDRAW, "lItemlParam") ; Item param (item control ID)
							Local $iSubItem = DllStructGetData($tNMLVCUSTOMDRAW, "iSubItem") ; Subitem index

							DllStructSetData($tNMLVCUSTOMDRAW, "ClrText", 0xFF00FF) ; Backcolor white
					EndSwitch

				Case $NM_CLICK ; An item was clicked
					$tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
					$iIndex = DllStructGetData($tInfo, "Index")
					$SubItem = DllStructGetData($tInfo, "SubItem")
					;	$iItemParam = DllStructGetData( $tInfo, "lItemlParam" )
					If $SubItem = 0 Then
						$hListViewRead = _GUICtrlListView_GetItemTextArray($ListView_TEST, $iIndex)
						;	MsgBox_Info($hListViewRead[2] & @CRLF & _GUICtrlListView_GetItemChecked($ListView_TEST, $iIndex))
						;Перевёртышь
						If _GUICtrlListView_GetItemChecked($ListView_TEST, $iIndex) = False Then
							;Выбрано
						Else
							;Не выбрано
						EndIf
					EndIf
			EndSwitch
	EndSwitch
EndFunc   ;==>WM_NOTIFY

Отправлено: 14:49, 22-08-2018

 

Ветеран


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

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


-TRM-, такое лучше сразу на Русское сообщество AutoIt помещать, здесь они если и появляются, то очень редко.

Отправлено: 15:02, 22-08-2018 | #2



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

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


Аватара для Creat0R

Must AutoIt


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

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


Код: Выделить весь код
Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
	Local $tNMHDR, $iIDFrom, $iCode
	
	Local $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
	Local $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
	Local $iCode = DllStructGetData($tNMHDR, "Code")
	
	Switch $iIDFrom
		Case $ListView_TEST ; It is our ListView
			Switch $iCode
				Case $NM_CUSTOMDRAW
					Local $tNMLVCUSTOMDRAW = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam)
					Local $dwDrawStage = DllStructGetData($tNMLVCUSTOMDRAW, "dwDrawStage")
					
					Switch $dwDrawStage
						Case $CDDS_PREPAINT ; Before the paint cycle begins
							Return $CDRF_NOTIFYITEMDRAW
						Case $CDDS_ITEMPREPAINT ; Before painting an item
							Return $CDRF_NOTIFYSUBITEMDRAW ; Notify the parent window of any SUBITEM-related drawing operations
						Case BitOR($CDDS_ITEMPREPAINT, $CDDS_SUBITEM) ; Before painting a subitem
							Local $iIndex = DllStructGetData($tNMLVCUSTOMDRAW, "dwItemSpec")
							
							If _GUICtrlListView_GetItemChecked($ListView_TEST, $iIndex) Then
								DllStructSetData($tNMLVCUSTOMDRAW, "ClrText", 0xFF00FF)
							Else
								DllStructSetData($tNMLVCUSTOMDRAW, "ClrText", 0xFF0000)
							EndIf
					EndSwitch
			EndSwitch
	EndSwitch
EndFunc

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

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

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

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:18, 23-08-2018 | #3



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интернет - Изменение цвета картинки при переходе в электронную почту Evgenia78 Microsoft Windows 7 13 23-11-2014 22:34
VBS/WSH/JS - [решено] Поиск строки по маске в txt файле и замена всей строки из InputBox ultrarare Скриптовые языки администрирования Windows 11 03-07-2013 14:37
Vista / 2008 - Изменение цвета текста во время установки Smirniy Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 0 30-09-2009 22:18
Изменение надписи ос при выборе системы. roootxp Хочу все знать 8 15-01-2009 09:06
[решено] Изменение цвета фона ячейки таблицы при нажатии чекбокса dmitryst Вебмастеру 4 18-09-2008 03:59




 
Переход