Что нового

Как узнать цвет текста строки в ListView

pvnn

Осваивающий
Сообщения
305
Репутация
32
Всем доброго времени суток.

Есть Цветной ListView, как можно узнать цвет текста конкретной строки.

Код:
#include <GUIConstantsEx.au3>
#Include <GuiListView.au3>

$Form1 = GUICreate("Form1", 484, 192, 258, 187)
$hListView =  GUICtrlCreateListView ("Колонка 1:|Колонка 2:", 24, 16, 433, 97)
_GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES, $LVS_EX_CHECKBOXES))
GUICtrlCreateListViewItem('A|A' , $hListView)
GUICtrlCreateListViewItem('B|B' , $hListView)
GUICtrlSetColor(-1,0x00FF00)
GUICtrlCreateListViewItem('C|C' , $hListView)

$btB = GUICtrlCreateButton("Цвет", 200, 152, 75, 25)

GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $btB
			$IndexListView=_GUICtrlListView_GetSelectedIndices($hListView)  ; Определяем Индекс выделенной записи
			$IdItem=_GUICtrlListView_GetItemParam($hListView,$IndexListView)
;~  		GUICtrlSetColor( $IdItem,0x00FF00)
			$TextColor=_GUICtrlListView_GetTextColor($IdItem)
			MsgBox(0,$IdItem,$TextColor)
    EndSwitch
WEnd
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Если это ваш LV, то просто запомните, какой цвет был задан.
 
Автор
P

pvnn

Осваивающий
Сообщения
305
Репутация
32
Yashied, ваша идея понятна, но мне нужно узнать именно средствами Autoit. Это вообще возможно?
 

Sln

Знающий
Сообщения
45
Репутация
5
Чистый автоит :ok:
Код:
#include <GUIConstantsEx.au3>
#Include <GuiListView.au3>

$Form1 = GUICreate("Form1", 484, 192, 258, 187)
$hListView =  GUICtrlCreateListView ("Колонка 1:|Колонка 2:||", 24, 16, 433, 97)
_GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES, $LVS_EX_CHECKBOXES))

GUICtrlCreateListViewItem('A|A|0' , $hListView)
GUICtrlCreateListViewItem('B|B|' & 0x00FF00, $hListView)
GUICtrlSetColor(-1,0x00FF00)
GUICtrlCreateListViewItem('C|C|0' , $hListView)

_GUICtrlListView_SetColumn($hListView, 2, '', 0)

$btB = GUICtrlCreateButton("Цвет", 200, 152, 75, 25)

GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $btB
			For $i = 0 To _GUICtrlListView_GetItemCount($hListView)
				If _GUICtrlListView_GetItemFocused($hListView, $i) Then MsgBox(0,'zzz', '0x' & hex(_GUICtrlListView_GetItemText($hListView,$i,2), 6))
			Next
    EndSwitch
WEnd
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Ещё вариант:

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

Global $aLV_Items[1][2]

$hForm = GUICreate('Form1', 484, 192, 258, 187)

$hListView = GUICtrlCreateListView('Колонка 1:|Колонка 2:', 24, 16, 433, 97)
_GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES, $LVS_EX_CHECKBOXES))

_LVItem_Create('A|A', $hListView, 0xFF0000)
_LVItem_Create('B|B', $hListView, 0x00FF00)
_LVItem_Create('C|C', $hListView, 0x0000FF)

$iClr_Bttn = GUICtrlCreateButton('Цвет', 200, 152, 75, 25)

GUISetState(@SW_SHOW, $hForm)

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		Case $iClr_Bttn
			$iSelID = GUICtrlRead($hListView)
			
			If $iSelID > 0 Then
				$nColor = '0x' & Hex(_LVItem_GetColor($iSelID), 6)
				MsgBox(0, @ScriptName, $nColor, 0, $hForm)
			EndIf
	EndSwitch
WEnd

Func _LVItem_GetColor($iLVItemID)
	For $i = 0 To $aLV_Items[0][0]
		If $aLV_Items[$i][0] = $iLVItemID Then
			Return $aLV_Items[$i][1]
		EndIf
	Next
EndFunc

Func _LVItem_Create($sText, $hLV, $nColor = Default)
	$aLV_Items[0][0] += 1
	ReDim $aLV_Items[$aLV_Items[0][0] + 1][2]
	
	$aLV_Items[$aLV_Items[0][0]][0] = GUICtrlCreateListViewItem($sText, $hLV)
	$aLV_Items[$aLV_Items[0][0]][1] = $nColor
	
	GUICtrlSetColor($aLV_Items[$aLV_Items[0][0]][0], $nColor)
	
	Return $aLV_Items[$aLV_Items[0][0]][0]
EndFunc
 
Верх