Hola:
Por lo que veo y por tus últimos mensajes, estás muy decidido con el MsFlexgrid y puedo decirte que lo lo utilizo siempre y le encuentro pocos inconvenientes.
En primer lugar, te aconsejaría que vayas creando algunas rutinas reutilizables para que te simplifiquen el proceso con el mismo.
Supongo que tienes claro que las rutinas Publicas debes incluirlas juntas en un Módulo.
Por ejemplo podrías tener:
1) Poner el título en una Columna, dimensionar su ancho, determinar si se ajustará a la izquierda, derecha o centro.
2) Poner el dato en la celda indicada.
¿ Porque tener estas rutinas ? Pues porque dentro de ellas puedes ir controlando errores que no tendrás que controlar en cada sentencia, mejorarlas poco a poco, mejorando así todo el código con un simple arreglo.
Te indico el principio, TU lo analizas, lo estudias, lo pruebas, lo mejoras y comentas.
Crea por ejemplo un Modulo con el nombre SubGrid y empiezas con la rutina:
Código vb:
Ver originalPublic Sub GridCabecera(Grid As MSFlexGrid, Columna As Single, AnchoTwips As Single, Titulo As String, Ajuste As String)
' Si la Columna no existe, la añadimos ya que de lo contrario se produciría un error
If Grid.Cols - 1 < Columna Then Grid.Cols = Columna + 1
Grid.ColWidth(Columna) = AnchoTwips
Select Case UCase(Ajuste)
Case "I": Grid.ColAlignment(Columna) = 1 ' Izquierda
Case "D": Grid.ColAlignment(Columna) = 7 ' Derecha
Case "C": Grid.ColAlignment(Columna) = 4 ' Centro
End Select
Grid.Row = 0
Grid.Col = Columna
Grid.CellAlignment = 4 ' Título siempre Centrado
Grid.Text = Titulo
End Sub
Código vb:
Ver originalPrivate Sub GridPonerDato(Grid As MSFlexGrid, Fila As Single, Columna As Single, Dato As Variant)
' Si la fila no existe, la añadimos. La columna es de suponer que ya le hemos puesto cabecera
If Grid.Rows - 1 < Fila Then Grid.Rows = Fila + 1
Grid.TextMatrix(Fila, Columna) = Dato
End Sub
Ya puedes poner un MsFlexgrid en el proyecto y empezar a probar.
Nos leemos