Item con color de texto individualemente

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Item con color de texto individualemente

Mensaje por yasmany »

BUenas con todos, he estado intentando poner color por lo menos a un item del listView pero hasta ahora no lo he logrado.
Como podria hacerlo pero sin la necesidad de declarar una variable por item. ya que en el software real hace un analisis y son muchos los items listados.
ubicando items con GuiCtrlCreateListViewItem el ListView parpadea un poco aunque le ponga el estilo extendido $LVS_EX_DOUBLEBUFFER por eso utilizao el AddItem con esto ya no parpadea.
Trato de ubicar un color diferente por item... espero de su ayuda.

Podria alguien ayudarme a solventar este problem.

Código: Seleccionar todo

#include <ColorConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>

Global $lista
Example()

Func Example()

	GUICreate("ListView Set Text Color", 400, 300)
	$lista = GUICtrlCreateListView("col01|col02|col03", 2, 2, 394, 268)
	_GUICtrlListView_SetExtendedListViewStyle($lista, BitOR($LVS_EX_DOUBLEBUFFER, $LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES, $LVS_EX_BORDERSELECT, $LVS_REPORT))
	$btnPuColor = GUICtrlCreateButton("Put Color", 340, 272)
	_GUICtrlListView_SetColumnWidth($lista, 0, 100)
	GUISetState(@SW_SHOW)

	; Add items
	_GUICtrlListView_BeginUpdate($lista)
	For $iI = 1 To 10
		_GUICtrlListView_AddItem($lista, "Item " & $iI)
	Next
	_GUICtrlListView_EndUpdate($lista)

	While 1
		$msg = GUIGetMsg()
		If $msg = $GUI_EVENT_CLOSE Then ExitLoop
		If $msg = $btnPuColor Then _ponerColorItems()
	WEnd
	GUIDelete()
EndFunc   ;==>Example

Func _ponerColorItems()
_GUICtrlListView_SetTextBkColor($lista, $CLR_MONEYGREEN)
EndFunc
Saludos... :smt024
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Item con color de texto individualemente

Mensaje por Dany »

dices si le das al check box del item que cambie de color?

Saludos
  • ............................................Imagen
    ......................................Imagen
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Item con color de texto individualemente

Mensaje por Dany »

si es eso, puedes hacer algo asi:

Código: Seleccionar todo

#include <ColorConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>


Global $lista, $hListView, $State



Example()

Func Example()

	GUICreate("ListView Set Text Color", 400, 300)
	$lista = GUICtrlCreateListView("col01|col02|col03", 2, 2, 394, 268)
	$hListView = GUICtrlGetHandle(-1)
	_GUICtrlListView_SetExtendedListViewStyle($lista, BitOR($LVS_EX_DOUBLEBUFFER, $LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES, $LVS_EX_BORDERSELECT, $LVS_REPORT))
	_GUICtrlListView_SetColumnWidth($lista, 0, 130)
	_GUICtrlListView_SetColumnWidth($lista, 1, 130)
	_GUICtrlListView_SetColumnWidth($lista, 2, 130)

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

	; Add items
	_GUICtrlListView_BeginUpdate($lista)
	For $iI = 1 To 10
		_GUICtrlListView_AddItem($lista, "Item " & $iI)
	Next
	_GUICtrlListView_EndUpdate($lista)

	While 1
		$msg = GUIGetMsg()
		If $msg = $GUI_EVENT_CLOSE Then ExitLoop
;~       If $msg = $btnPuColor Then _ponerColorItems()
	WEnd
	GUIDelete()
EndFunc   ;==>Example



Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)

	Local $tNMHDR, $hWndFrom, $IDFrom, $Code, $tNMLISTVIEW, $iItem
	$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
	$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
	$Code = DllStructGetData($tNMHDR, "Code")

	Switch $hWndFrom
		Case $hListView
			Switch $Code

				Case $NM_CUSTOMDRAW
					Local $tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam)

					Local $iDrawStage = DllStructGetData($tCustDraw, "dwDrawStage")

					If $iDrawStage = $CDDS_PREPAINT Then Return $CDRF_NOTIFYITEMDRAW
					If $iDrawStage = $CDDS_ITEMPREPAINT Then Return $CDRF_NOTIFYSUBITEMDRAW

					Local $iSubItem = DllStructGetData($tCustDraw, "iSubItem")

					Local $iItem = DllStructGetData($tCustDraw, "dwItemSpec")
					Local $iColor, $hDC
					If _GUICtrlListView_GetItemChecked($hListView, $iItem) Then
						$iColor = RGB2BGR(0xFF0000)
						DllStructSetData($tCustDraw, "clrTextBk", $iColor)
						Return $CDRF_NEWFONT
					EndIf

			EndSwitch
	EndSwitch
	Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

Func RGB2BGR($iColor)
	Return BitAND(BitShift(String(Binary($iColor)), 8), 0xFFFFFF)
EndFunc   ;==>RGB2BGR
Saludos
  • ............................................Imagen
    ......................................Imagen
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Re: Item con color de texto individualemente

Mensaje por yasmany »

disculpa no haber respondido pronto me encontraba de viaje...
es perfecto lo que tu me acabas de ayudar me surgieron algunas ideas más, pero en si me refería a aplicar un color al texto del item no a la seleccion idependientemente de que esté chekeado o no con solo pulsar el boton de poner color.

mil gracias por tu ayuda, espero se pueda. :smt024
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Re: Item con color de texto individualemente

Mensaje por yasmany »

YA LE ENTENDÍ UN POQUITIN EL CODE :smt026 ... SOLO HAY Q CAMBIAR ESTO
DllStructSetData($tCustDraw, "clrTextBk", $iColor) por esto DllStructSetData($tCustDraw, "clrText", $iColor)

Mil Gracias Dany.... :smt024
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Re: Item con color de texto individualemente

Mensaje por yasmany »

mejor me explico... disculpame Dany
querría algo como QUE cuando haces clic en el boton Poner Color, se ponga color solo al texto de los items chekeados.
:smt024
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Item con color de texto individualemente

Mensaje por Dany »

luego te paso un ejemplo :)

saludos
  • ............................................Imagen
    ......................................Imagen
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Re: Item con color de texto individualemente

Mensaje por yasmany »

Gracias Dany... esperaré, ando intentando hasta mientras :smt001
Saludos... :smt024
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Responder