Discussion:
ListView SubItems.Bold...
(demasiado antiguo para responder)
Vinchenzo vinç
2005-06-07 16:26:52 UTC
Permalink
Hola amigos!, una cuestión:

La parte correcta:
tengo un ListView con vista 'lvwReport' y varias columnas.
En el momento del llenado, hay algunos elementos que dejo con la
propiedad '.Bold = True', al igual que sus respectivos subelementos (similar
a lo que vemos en OE con los mensajes que aun no hemos leído).

La parte molesta:
el evento '_ItemClick' alberga una simple rutina para reestablecer el
formato de la fila seleccionada:
'************************
Private Sub Lv_ItemClick(ByVal Item As MSComctlLib.ListItem)
Dim LvSubElemento As ListSubItem

Item.Bold = False
For Each LvSubElemento In Item.ListSubItems
LvSubElemento.Bold = False
Next
End Sub
'************************

Pues resulta que sólo actualiza el atributo de negrita sobre el 'Item',
los subelementos permanecen en negrita hasta que, o bien invoco el método
'.Refresh' del ListView, o hasta que el ListView pierde el foco. (probé
añadiendo un DoEvents... pero no tiene efecto)

El problema está en que refrescar el ListView implica un ridículo
parpadeo que no consigo evitar.
No he encontrado nada, ¿tenéis alguna pista?


Gracias de antemano.
--
:-) Un saludo
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
( ! ) Respuestas precedentes en Google:
http://tinyurl.com/43b3q
( i ) Temperancia en el foro:
http://www.mvp-access.com/rubenvigon/foro
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
( ! ) Lee. Decide. Firma la petición a Microsoft:
http://classicvb.org/petition/?lang=es
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Rubén Vigón
2005-06-07 16:45:41 UTC
Permalink
Private Sub Lv_ItemClick(ByVal Item As MSComctlLib.ListItem)
Dim LvSubElemento As ListSubItem
Item.Bold = False
For Each LvSubElemento In Item.ListSubItems
LvSubElemento.Bold = False
LvSubElemento.Text = LvSubElemento.Text
Next
End Sub

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvp-access.com

Reunión de participantes del foro microsoft.public.es.vb (2005)
http://www.mvp-access.com/rubenvigon/reunion.asp
Vinchenzo vinç
2005-06-07 16:56:33 UTC
Permalink
"Rub�n Vig�n" <***@QUITAESTOwanadoo.es> escribi� en el mensaje news:***@TK2MSFTNGP09.phx.gbl...
Private Sub Lv_ItemClick(ByVal Item As MSComctlLib.ListItem)
Dim LvSubElemento As ListSubItem
Item.Bold = False
For Each LvSubElemento In Item.ListSubItems
LvSubElemento.Bold = False
LvSubElemento.Text = LvSubElemento.Text
Next
End Sub


Hola Rubén!

no entiendo porqué la asignación funciona:
LvSubElemento = LvSubElemento

pero funciona :-s

Muchas gracias!! :-))
--
:-) Un saludo
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
( ! ) Respuestas precedentes en Google:
http://tinyurl.com/43b3q
( i ) Temperancia en el foro:
http://www.mvp-access.com/rubenvigon/foro
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
( ! ) Lee. Decide. Firma la petición a Microsoft:
http://classicvb.org/petition/?lang=es
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Luis Garcia
2005-06-07 16:46:53 UTC
Permalink
Post by Vinchenzo vinç
tengo un ListView con vista 'lvwReport' y varias columnas.
En el momento del llenado, hay algunos elementos que dejo con la
propiedad '.Bold = True', al igual que sus respectivos subelementos (similar
a lo que vemos en OE con los mensajes que aun no hemos leído).
el evento '_ItemClick' alberga una simple rutina para reestablecer el
'************************
Private Sub Lv_ItemClick(ByVal Item As MSComctlLib.ListItem)
Dim LvSubElemento As ListSubItem
Item.Bold = False
For Each LvSubElemento In Item.ListSubItems
LvSubElemento.Bold = False
Next
End Sub
'************************
Pues resulta que sólo actualiza el atributo de negrita sobre el 'Item',
los subelementos permanecen en negrita hasta que, o bien invoco el método
'.Refresh' del ListView, o hasta que el ListView pierde el foco. (probé
añadiendo un DoEvents... pero no tiene efecto)
El problema está en que refrescar el ListView implica un ridículo
parpadeo que no consigo evitar.
No he encontrado nada, ¿tenéis alguna pista?
Ni idea porque no lo hace correctamente.... a la espera de un
Item.ListSubItems.Refresh o similar, prueba de 'engañar' al ListView
forzando a redibujar la línea. Por ejemplo:

For Each LvSubElemento In Item.ListSubItems
LvSubElemento.Bold = False
===> LvSubElemento.Text = LvSubElemento.Text
Next

Otro truco es, si tienes el ListView con 'CheckBoxes = False':
Item.Checked = True ''' Al final de todo...

Espero que te sirva.

Saludos
Vinchenzo vinç
2005-06-07 17:00:21 UTC
Permalink
Post by Luis Garcia
Ni idea porque no lo hace correctamente.... a la espera de un
Item.ListSubItems.Refresh o similar, prueba de 'engañar' al ListView
For Each LvSubElemento In Item.ListSubItems
LvSubElemento.Bold = False
===> LvSubElemento.Text = LvSubElemento.Text
Next
Item.Checked = True ''' Al final de todo...
Luis, cuando he visto la respuesta de Rubén ya lo he comprobado, y
aunque la solución no sea "lógica", cosas más extrañas se han visto.

:-) Gracias por la respuesta Luis!
--
:-) Un saludo
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
( ! ) Respuestas precedentes en Google:
http://tinyurl.com/43b3q
( i ) Temperancia en el foro:
http://www.mvp-access.com/rubenvigon/foro
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
( ! ) Lee. Decide. Firma la petición a Microsoft:
http://classicvb.org/petition/?lang=es
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Lluís Franco
2005-06-08 07:27:15 UTC
Permalink
:-)
Hola Vinchenzo... pues si, cosas más raras se han visto.
Recuerdo yo una pelea que tuvimos Rubén y yo con un TreeView y sus
CheckBoxes hace un tiempo...... :-P

Saludos,
--
--
Lluís Franco i Montanyés
[MS-MVP-MCP Visual Basic]

This posting is provided "AS IS" with no warranties, and confers no rights.
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho

--
(Guía de netiquette del foro)
http://www.uyssoft.com/MSNews.aspx?sm=10
FIMARGE, S.A.
Principat d'Andorra
***@ODIO_EL_SPAMfimarge.ad
Tel.: +376 805 100
Fax: +376 824 500
Mi Perfil MVP en: http://tinyurl.com/4nbnb
Vinchenzo vinç
2005-06-08 17:54:52 UTC
Permalink
Post by Lluís Franco
:-)
Hola Vinchenzo... pues si, cosas más raras se han visto.
Recuerdo yo una pelea que tuvimos Rubén y yo con un TreeView y sus
CheckBoxes hace un tiempo...... :-P
Hola Lluís, yo también recuerdo el problema del TreeView, al cuál hice
alusión en una respuesta de no hace mucho, y sí, a ese tipo de cosas me
refería.

"Detalles" que (en mi opinión) Microsoft debería haber solucionado con
una nueva actualización del Visual Basic 6, incluyendo lo del "StackTrace"
que encontramos en .Net que has comentado en otra respuesta, y... bueno,
otras "tonterias tontas" que a más de uno nos habría satisfecho <:-)

mala suerte! :-)
--
:-) Un saludo
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
( ! ) Respuestas precedentes en Google:
http://tinyurl.com/43b3q
( i ) Temperancia en el foro:
http://www.mvp-access.com/rubenvigon/foro
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
( ! ) Lee. Decide. Firma la petición a Microsoft:
http://classicvb.org/petition/?lang=es
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Loading...