elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Re-Pintado de Grid me Falla.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Re-Pintado de Grid me Falla.  (Leído 1,773 veces)
YAcosta

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re-Pintado de Grid me Falla.
« en: 31 Julio 2011, 05:04 am »

Hola, para pintar un Grid tipo cebra llamo a este procedimiento :
Call ZebraGrid(Grid)    ____Esto lo pongo en el load del form
y ese procedimiento tiene esto (El grid que uso es el MSHFlexGrid):
Código:
Public Sub ZebraGrid(Flex As Object)
Call AltLVBackGroundFlex(Flex, RGB(255, 255, 255), RGB(230, 243, 255))
End Sub

(Lo llamo con ZebraGrid porque originalmente tiene mas parametros que uso para formatear algunas columnas).
255,255,255 es blanco y 230,243,255 es un celeste pastel
El codigo de AltLVBackGroundFlex es este:
Código:
Public Sub AltLVBackGroundFlex(Flex As Object, ByVal BackColorOne As OLE_COLOR, ByVal BackColorTwo As OLE_COLOR)
Dim Row            As Long
Dim Col            As Integer
With Flex
   .Redraw = False
   .BackColor = BackColorOne
   For Row = 1 To .Rows - 1 Step 2
      .Row = Row
      For Col = 1 To .Cols - 1
         .Col = Col
         .CellBackColor = BackColorTwo
      Next
   Next
   .Redraw = True
End With
End Sub

Hasta aquí todo perfecto, nada del otro mundo, es bastante usable.
El problemilla que tengo es que se me ha pedido ordenar las filas haciendo clic en la cabecera del grid, el ordenamiento ya lo tengo resuelto, pero se me echa a perder el pintado del grid porque a cada clic que se le hace se desordenan los colores mas y mas tendiendo a ponerse todo el grid de un solo color (el del celeste pastel).
Para querer resolverlo sin éxito puse este codigo:
Código:
If Grid1.MouseRow = 0 Then
   Call RSel(Grid1, True)    <--- Con esto ordeno las filas
   Grid1.BackColor = vbWhite  <--- Con esto quise que me pinte todo el grid en blanco y luego aplique el zebra
   Call ZebraGrid(Grid)
End If

Pero Grid1.BackColor no me cambia el color de todo el grid como lo esperaba, creo que es porque ya aplique CellBackColor y no me deja.

Por siaca les pongo el codigo de RSel.
Código:
Public Sub RSel(Miflex As MSHFlexGrid, Ordenar As Boolean)
If Ordenar Then
    If Miflex.MouseRow = 0 Then
        If ContaClick = 1 Then
            Miflex.Sort = ContaClick
            ContaClick = 2
        Else
            Miflex.Sort = ContaClick
            ContaClick = 1
        End If
    Else
        Miflex.Col = 0
        Miflex.ColSel = Miflex.Cols - 1
    End If
Else
    Miflex.Col = 0
    Miflex.ColSel = Miflex.Cols - 1
End If
End Sub

Espero me puedan dar una mano, gracias.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Control DB Grid
Programación Visual Basic
Franckpro 0 1,857 Último mensaje 5 Octubre 2005, 20:48 pm
por Franckpro
Data Grid
Programación Visual Basic
Zinc 3 2,457 Último mensaje 25 Mayo 2006, 23:45 pm
por Zinc
Disco duro falla aleatoriamente. ¿Posible falla en el motor? :P
Hardware
Ariath 3 4,883 Último mensaje 23 Junio 2010, 22:05 pm
por Aprendiz-Oscuro
Concurso: Pintado de Logo
Diseño Gráfico
Jec 7 7,174 Último mensaje 4 Enero 2011, 02:22 am
por flacc
Encuentran a un perro pintado de verde, llorando y buscando comida en una calle
Foro Libre
El_Andaluz 1 1,382 Último mensaje 14 Noviembre 2019, 15:58 pm
por Tachikomaia
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines