https://foro.gambas-es.org/viewtopic.php?f=1&t=5002&p=28992#p28992
-----------------------------------
shordi
Viernes, 27 Noviembre 2015, 17:47

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:
[code linenumbers=false syntax=gambas]
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
[/code]  
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:

[code linenumbers=false syntax=gambas]
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[/code]

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


