Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Evento Data, Colorear Celdas Y Ver Texto
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Evento Data, Colorear Celdas Y Ver Texto 
 
Hola!.

¿ Es imposible dar color a las celdas y poder ver el texto  cuando se produce el evento data del GridView ?.

La impresión que produce es: Dibuja los colores de las filas, alternadamente por ejemplo.
Al mover la barra de desplazamiento vertical, se ve el texto, pero rápidamente los colores se actualizan en las celdas y no dejar ver el texto

¿ Tiene solución ?.  

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Evento Data, Colorear Celdas Y Ver Texto 
 
¿Cómo lo estás haciendo? Nunca me ha pasado eso que dices, aunque se me ocurre que si se cambia el orden de dibujado podría ocurrir algo así con procesadores/tarjetas gráficas lentas. No sé, es un decir...

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Evento Data, Colorear Celdas Y Ver Texto 
 
Pon el código, a mi no me pasa nada de eso. A ver cómo lo haces.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Evento Data, Colorear Celdas Y Ver Texto 
 
Jesús:

No, por equipo o tarjeta lenta no es. Algo tengo que estar haciendo mal.

Lo que muestro es un archivo de texto que tiene mas de 30k lineas de registros en un gridview.
No estoy muy puesto en el uso del evento Data, para ser la primera vez logré lo que quería hacer, pero tengo el problema de los colores.
No estoy leyendo de un base de datos, es un archivo de texto con un array.

Al principio lo que hacía era que mostraba todas los registros en el gridview, pero aquello era algo lento.
Este es el código de la parte que muestra el contenido con el evento Data.

Como el número de campos que me interesa es menor, eliminé algunas columnas
El número de filas es grande, bastante.

Public Sub Form_Activate()
  
  grdTabla.Rows.Count = numfilas
  grdTabla.Columns.Count = numcampos - 2
    
End

Public Sub grdTabla_Data(Row As Integer, Column As Integer)

  Dim camposactuales As String[]  
  Dim f As New Font
  
  camposactuales = Split(registros[row], "::", "", True)
  camposactuales.Remove(0)
  camposactuales.Remove(camposactuales.Length - 1)
    
  If grdTabla.Columns[column].Width < f.TextWidth(camposactuales[column]) Then
    grdTabla.Columns[column].Width = f.TextWidth(camposactuales[column])
  Endif
 
  'No funciona ver las filas con colores y a la vez el texto
  If row Mod 2 = 0 Then
    grdTabla[row, column].Background = Color.White
  Else
    grdTabla[row, column].Background = Color.LightBackground
  Endif
  
  grdTabla.Data.Text = camposactuales[column]
    
End
 


A ver que me aconsejáis. Sobre todo el buen uso del evento Data.
Ya sé que debería usar una base de datos y no un archivo de texto con registros, es cosa de experimentos.  

Los componentes en uso son:
- gb
- gb.form
- gb.gui.qt
- gb.image

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Evento Data, Colorear Celdas Y Ver Texto 
 
No se hace así, generas la fuente de datos en cada ejecución del evento, que es una por cada celda.
Tienes que generar la fuente de datos antes y que el gridview se limite a "sus cosas", es decir a pintar y mostrar.

Te adjunto un ejemplo que te acabo de hacer de cómo se puede hacer de manera sencilla. Leyendo un CSV se pasa a una tabla bidimensional y se muestra en un gridview.
Tienes una variable que puedes usar para mostrar o no el estilo "cebra" (pijama se decía en mis tiempos).
La fila seleccionada se ve en negrita y la celda seleccionada con fondo rojo.

 captura_de_pantalla_de_2015_11_27_11_49_16

datafromtext-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: datafromtext-0.0.1.tar.gz
Tamaño: 12.47 KB
Descargado: 83 veces
datafromtext-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: datafromtext-0.0.1.tar.gz
Tamaño: 12.47 KB
Descargado: 83 veces
datafromtext-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: datafromtext-0.0.1.tar.gz
Tamaño: 12.47 KB
Descargado: 83 veces

 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Evento Data, Colorear Celdas Y Ver Texto 
 
En efecto, el texto en la celda es visible.

Gracias, shordi: ahora hemos comprendido zomp como utilizar al evento _Data de una GridView.

Private s As New String[3, 3]


Public Sub Form_Open()

   With GridView1
     .Rows.Count = 3
     .Columns.Count = 3
   End With
  
  s[1, 1] = "shordi"
  s[1, 2] = "super"

End


Public Sub GridView1_Data(Row As Integer, Column As Integer)

   If (Row = 1) And (Column = 1) Then GridView1.Data.Background = Color.SetAlpha(&FF0000, 240)
   If (Row = 1) And (Column = 2) Then GridView1.Data.Background = Color.SetAlpha(&FFFF00, 240)

   GridView1.Data.Text = s[Row, Column]

End

 



 
última edición por vuott el Viernes, 27 Noviembre 2015, 13:13; editado 2 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Evento Data, Colorear Celdas Y Ver Texto 
 
Shordi:

Me pongo con ello.  Muchas gracias. Ya te comento cualquier duda.

Vuott:

¿ Cómo es que no añadiste el emoticon/smile al mensaje ?.  
Por cierto,¿ sabías que los emoticonos ya han cumplido mas de 30 años ?!.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Evento Data, Colorear Celdas Y Ver Texto 
 
Hice un pequeño cambio y ha funcionado, pero "el reloj" se muestra cuando cambio el tamaño de alguna de las columnas.  ( Son muchos registros )
Tengo que probar tu método, Jorge. Creo que es algo más lento.

Lo que he cambiado en el evento Data fue grdTabla[row][colum] por grdTabla.Data.BackGround .
La verdad es que es rápido.

Public Sub grdTabla_Data(Row As Integer, Column As Integer)

  Dim camposactuales As String[]  
  Dim f As New Font
  
  camposactuales = Split(registros[row], "::", "", True)
  camposactuales.Remove(0)
  camposactuales.Remove(camposactuales.Length - 1)
    
  If grdTabla.Columns[column].Width < f.TextWidth(camposactuales[column]) Then
    grdTabla.Columns[column].Width = f.TextWidth(camposactuales[column])
  Endif
 
 
  If row Mod 2 = 0 Then
    grdTabla.Data.Background = Color.White    
  Else
    grdTabla.Data.Background = Color.LightBackground    
  Endif  

  grdTabla.Data.Text = camposactuales[column]
    
End


Lo cierto es que se muestra el texto y los colores

 muestra

Esta forma de hacerlo lo he visto con una base de datos. Adjunto lo principal.
Public Sub Form_Activate()

  'Cambia el contador de filas del gridview de 0 al numero de registros
  'Esto maneja el Trigger del evento del manejador Data
  GridView1.Rows.Count = $res.Count

End


Public Sub GridView1_Data(Row As Integer, Column As Integer)

  $res.MoveTo(Row)
  GridView1.Data.Text = Str($res[GridView1.Columns[Column].Text])

End
 


En el propio evento Data se actualiza que registro quiero ver y me muestra cada campo que voy a mostrar.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Evento Data, Colorear Celdas Y Ver Texto 
 
Shordi:

Comprueba si esto no es más rápido.  
Claro que son pocos registros. He usado tu csv. No es complicado añadir muchos mas.

Lo que es leer ese archivo de p a pa es muy lento (cuando es grande el csv).
Lleva un tiempo leer un archivo de tantos registros.

Saludos

GridDataChanged.tar.gz
Descripción:  
Descargar
Nombre del archivo: GridDataChanged.tar.gz
Tamaño: 13.6 KB
Descargado: 70 veces
GridDataChanged.tar.gz
Descripción:  
Descargar
Nombre del archivo: GridDataChanged.tar.gz
Tamaño: 13.6 KB
Descargado: 70 veces
GridDataChanged.tar.gz
Descripción:  
Descargar
Nombre del archivo: GridDataChanged.tar.gz
Tamaño: 13.6 KB
Descargado: 70 veces

 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Evento Data, Colorear Celdas Y Ver Texto 
 
Bueno... es más rápido si insistes en recorrer y reformatear el grid en cada evento Data.
Esto:
Public Sub grdTabla_Data(Row As Integer, Column As Integer)
  ....
  ....
  If grdTabla.Columns[column].Width < f.TextWidth(camposactuales[column]) Then
       grdTabla.Columns[column].Width = f.TextWidth(camposactuales[column])
  Endif
  ....
  ....

End
 
  
En la impresión de cada una de las celdas de cada una de las filas. No tiene mucho sentido porque:
   -Si el .csv está controlado (es decir sabes de antemano el ancho aproximado de cada campo) no necesitas tal formateo "en caliente" y puedes preestablecer el ancho de las columna una sola vez fuera del evento Data.
   -Si el .csv no está controlado (es decir no sabes de antemano el ancho aproximado de cada campo) en el momento que una columna contenga el primer párrafo del quijote, la has cagado.

Prueba ésto:

En el form activa la propiedad Arrangment a Fill y la propiedad Expand a True
Establece la propiedad Expand del Gridview a True
y luego:

Public Sub Form_Activate()
  
  Dim n As Integer
  
  grdTabla.Rows.Count = numfilas
  grdTabla.Columns.Count = numcampos
  For n = 0 To numcampos - 1
      grdTabla.Columns[n].Expand = True
  Next
  
End

Public Sub grdTabla_Data(Row As Integer, Column As Integer)

  Dim camposactuales As String[]  
  Dim f As New Font
  
  camposactuales = Split(registros[row], ";", "", True)
    
  If row Mod 2 = 0 Then
    grdTabla.Data.Background = Color.White    
  Else
    grdTabla.Data.Background = Color.LightBackground    
  Endif  
  grdTabla.Data.Text = camposactuales[Column]
    
End


Verás que las columnas se adaptan al espacio disponible. Puedes también jugar con ellas, si es que sabes qué pueden contener, y dejar fijas algunas (las que contegan cosas como el DNI o el teléfono) y expandidas las otras, (nombre y dirección, por ejemplo) y con ello te quedan unos grid muy agradables.

De todas formas, fuera del laboratorio, no creo que el fichero de texto sea el soporte adecuado para un grid "currado", más bien te vale para decidir si el contenido de ese fichero vale la pena pasarlo o no a una base de datos. Por tanto, tal vez todas las columnas adaptables sean lo mejor en este caso.

Moraleja:
No formatees las Columnas del GridView en el evento data, sólo la celda o, como mucho, la fila.

Saludos
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Mas Sobre GridView Heredado Y Su Evento Data shordi Controles/Librerías/Componentes 6 Martes, 05 Octobre 2010, 11:34 Ver último mensaje
shordi
No hay nuevos mensajes Problema Con El Evento Data De GridView. D... Shell General 15 Sabado, 22 Noviembre 2014, 00:21 Ver último mensaje
Shell
No hay nuevos mensajes Como Controlar El Evento Data De Gridview? vr_rv Bases de Datos 6 Jueves, 23 Junio 2016, 22:34 Ver último mensaje
jguardon
No hay nuevos mensajes Evento Data imagomundi Controles/Librerías/Componentes 2 Lunes, 06 Abril 2020, 02:04 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron