Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Color de lineas y columnas en msflexgrid

Estas en el tema de Color de lineas y columnas en msflexgrid en el foro de Visual Basic clásico en Foros del Web. Hola! Tengo una consultilla, he encontrado un codigo en el cual me especifica el color de las columnas y de las filas de un msflexgrid ...
  #1 (permalink)  
Antiguo 10/04/2010, 08:02
Avatar de XYON126  
Fecha de Ingreso: abril-2006
Mensajes: 272
Antigüedad: 18 años
Puntos: 0
Color de lineas y columnas en msflexgrid

Hola!

Tengo una consultilla, he encontrado un codigo en el cual me especifica el color de las columnas y de las filas de un msflexgrid (siempre fijos), en cambio yo lo que necesito es que la ultima fila los colores de las celdas no sean todos iguales sino alternativos ejemplo por celda .: blanco, rosa, blanco, rosa, blanco, rosa, etc. y este codigo lo unico que me hace es que todas las filas sean o amarillo o blanco de color unico (No como un tablero de ajedrez solo la ultima fila) Ah! Tengo un número de filas y columnas fijo siendo 7 y 7. ¿Como podria variarlo? por otro lado os remito el codigo pero podriais explicarme lo que hace y donde pues si lo copio nada mas lo unico que realizo es copy/paste y no aprendo.

Muchas gracias por adelantado.

codigo:
Código vb:
Ver original
  1. Option Explicit
  2.  
  3. ' ----------------------------------------------------------------------------------------------
  4.  ' \\ -- Descripción : Alternar color por Filas en Flexgrid
  5.  '    -- Autor       : Luciano Lodola -- http://www.recursosvisualbasic.com.ar/
  6.  ' ----------------------------------------------------------------------------------------------
  7.  ' ----------------------------------------------------------------------------------------------
  8.  
  9.   Private Declare Function SetErrorMode Lib "kernel32" (ByVal wMode As Long) As Long
  10.   Private Declare Sub InitCommonControls Lib "Comctl32" ()
  11. ' ----------------------------------------------------------------------------------------------
  12.  ' \\ -- Descripción : Alternar color por Filas en Flexgrid
  13.  '    -- Autor       : Luciano Lodola -- http://www.recursosvisualbasic.com.ar/
  14.  ' ----------------------------------------------------------------------------------------------
  15.  ' ----------------------------------------------------------------------------------------------
  16.  
  17.   Private Declare Function SetErrorMode Lib "kernel32" (ByVal wMode As Long) As Long
  18.   Private Declare Sub InitCommonControls Lib "Comctl32" ()
  19.  
  20.  
  21.  
  22. ' --------------------------------------------------------------------------------------------
  23. ' \\ -- Función para Colorear por Filas
  24.  ' --------------------------------------------------------------------------------------------
  25.  Private Sub pvSetColors(objFlexgrid As Object, ByVal lColor1 As Long, ByVal lColor2 As Long)
  26.       Dim iRow            As Long
  27.       Dim iCol            As Integer
  28.       Dim lCurrentColor   As Long
  29.  
  30.       With objFlexgrid
  31.       ' -- Desahbilitar el repintado del control para agilizar el trabajo
  32.          .Redraw = False
  33.           .BackColor = lColor1
  34.           ' -- Recorrer las filas
  35.          For iRow = 0 To .Rows - 1 Step 2
  36.               ' -- Establecer la Fila actual del flex
  37.              .Row = iRow
  38.               ' -- Recorre por columna y le aplica el color a la celda indicada de la fila actual
  39.              For iCol = 0 To .Cols - 1
  40.                   .Col = iCol
  41.                   .CellBackColor = lColor2
  42.               Next
  43.           Next
  44.           ' -- Reestablecer la propiedad Redraw para poder refrescar el control
  45.          .Redraw = True
  46.       End With
  47.   End Sub
  48.  
  49.  
  50. ' --------------------------------------------------------------------------------------------
  51. ' \\ -- Función para Colorear por Filas
  52.  ' --------------------------------------------------------------------------------------------
  53.  Private Sub pvSetColors(objFlexgrid As Object, ByVal lColor1 As Long, ByVal lColor2 As Long)
  54.       Dim iRow            As Long
  55.       Dim iCol            As Integer
  56.       Dim lCurrentColor   As Long
  57.  
  58.       With objFlexgrid
  59.       ' -- Desahbilitar el repintado del control para agilizar el trabajo
  60.          .Redraw = False
  61.           .BackColor = lColor1
  62.           ' -- Recorrer las filas
  63.          For iRow = 0 To .Rows - 1 Step 2
  64.               ' -- Establecer la Fila actual del flex
  65.              .Row = iRow
  66.               ' -- Recorre por columna y le aplica el color a la celda indicada de la fila actual
  67.              For iCol = 0 To .Cols - 1
  68.                   .Col = iCol
  69.                   .CellBackColor = lColor2
  70.               Next
  71.           Next
  72.           ' -- Reestablecer la propiedad Redraw para poder refrescar el control
  73.          .Redraw = True
  74.       End With
  75.   End Sub
  76.   Private Sub pvSetColors2(objFlexgrid As Object, ByVal lColor1 As Long, ByVal lColor2 As Long)
  77.       Dim iRow            As Long
  78.       Dim iCol            As Integer
  79.       Dim lCurrentColor   As Long
  80.  
  81.       With objFlexgrid
  82.       ' -- Desahbilitar el repintado del control para agilizar el trabajo
  83.          .Redraw = False
  84.           .BackColor = lColor1
  85.                   .Row = 6
  86.               ' -- Recorre por columna y le aplica el color a la celda indicada de la fila actual
  87.              For iCol = 0 To .Cols - 1
  88.                   .Col = iCol
  89.                   .CellBackColor = lColor2
  90.            Next
  91.           ' -- Reestablecer la propiedad Redraw para poder refrescar el control
  92.          .Redraw = True
  93.       End With
  94.   End Sub
  95.  
  96. Private Sub Form_Load()
  97.  
  98. Call pvSetColors(MSFlexGrid1, RGB(255, 255, 203), RGB(255, 255, 255))
  99.  
  100. semana_C = Format(Date, "WW")
  101. lbl_nrsemana = semana_C
  102.  
  103. End Sub
  #2 (permalink)  
Antiguo 10/04/2010, 10:06
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 4 meses
Puntos: 53
Respuesta: Color de lineas y columnas en msflexgrid

Lo único importante a tus efectos que hace esta rutina es colorear filas alternativas, por lo que intentaré explicarte como deberías hacerlo para que lo comprendas que es lo importante.

Primero, para colorear una celda, debe ser la celda activa y esto lo consigues asignando las propiedades .Row y .Col las propiedades adecuadas, por esto, con un doble For / Next puedes recorrer el MsFlexgrid

Código:
For Fila = 0 To Grid.Rows -1  
  ' Asignamos la Fila que vamos a procesar
  Grid.Row = Fila
  For Columna = 0 To Grid.Cols -1 
      ' Asignamos la Columa
      Grid.Col = Columna
       ' Ahora podemos asignarle el color que queramos
      Grid.CellBackColor = Verde
  Next
Next
En tu caso el doble bucle no es necesario ya que SOLO pretendes colorear la Ultima fila, o sea

Fila = Grid.Rows -1

Por tanto aunque si debes asignar la fila activa, te basta con el Bucle de Columnas.

Saludos


A partir de aqui es donde debe jugar tu imaginación con los resultados que quieras obtener, te lo podría poner aqui pero como tu mismo dices, si lo analizas un poco lo aprenderás.
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #3 (permalink)  
Antiguo 10/04/2010, 10:30
Avatar de XYON126  
Fecha de Ingreso: abril-2006
Mensajes: 272
Antigüedad: 18 años
Puntos: 0
Respuesta: Color de lineas y columnas en msflexgrid

Muchas gracias erbunson, vamos a pelearnos con el codigo.

Pero ¿Que hacen estas lineas?

Codigo:
Código HTML:
 
  Private Declare Function SetErrorMode Lib "kernel32" (ByVal wMode As Long) As Long
  Private Declare Sub InitCommonControls Lib "Comctl32" ()

 
Gracias.



Un saludo
  #4 (permalink)  
Antiguo 11/04/2010, 09:03
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: Color de lineas y columnas en msflexgrid

Hola, la api InitCommonControls hace que tu aplicación tenga los temas de XP...solo si tenes un MANIFEST dentro de la carpeta con el .exe, hay otro metodo que es embeber el MANIFEST dentro de un recurso...pero bueno...si tu aplicación no lleva los temas de XP sacaselo...aunque siempre queda mejor que uses los temas..

y la api SetErrorMod se usa para que si estas haciendo un programa con procesos que normalmente Crashean el visual basic...con esta api evitas que te salga el famoso cartelito de microsoft cuando ocurre un error fatal en la aplicación...pero como te digo solo es cuando haces Hooks o subclasificaciones...si tu aplicación no hace nada de eso se lo podes sacar tranquilamente...

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #5 (permalink)  
Antiguo 11/04/2010, 11:33
Avatar de XYON126  
Fecha de Ingreso: abril-2006
Mensajes: 272
Antigüedad: 18 años
Puntos: 0
Respuesta: Color de lineas y columnas en msflexgrid

Hola seba123neo!

Gracias por tu aportación pero no entiendo nada, piensa que llevo solo 2 semanas con VB y estoy en fase de aprendizaje total, necesito toda la información posteada para tontos o torpes , se lo que son los API,s pero no como se aplican, con que sentencia, etc. incluso si lo que comentas de lo del XP o si Crashea, pues ¿Cmo puedo saberlo? lo que si esta claro es que va ha correr en XP pero creo que estoy mezclando Huevos con gasolina, que no tiene que ver una cosa con la otra.

Un saludo
  #6 (permalink)  
Antiguo 11/04/2010, 11:52
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 4 meses
Puntos: 53
Respuesta: Color de lineas y columnas en msflexgrid

Tienes mucha razón amigo Xyon, creo que si llevas 2 semanas, por ahora no te compliques la vida empezando la casa por el tejado.

Es mejor avanzar lentamente e ir aprendiendo que dar grandes zancadas y darte de morros contra problemas que aunque hoy pueden resultar difíciles para ti, poco a poco verás que vas vislumbrando la solución.

Animo y no desesperes si tu intención es llegar a entenderlo y comprenderlo.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...

Etiquetas: color, columnas, lineas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:21.