Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/11/2010, 19:01
Aquileo
 
Fecha de Ingreso: julio-2009
Mensajes: 9
Antigüedad: 14 años, 9 meses
Puntos: 0
Información Respuesta: ajustar el texto de un MSHFlexgrid

Checa con este codigo ajusta automaticamente las columnas de acuerdo al tamaño del texto mas amplio.

Código:
Public Sub AjustarColumnas(FlexGrid As MSHFlexGrid)
On Local Error GoTo ErrSub
                              
    'Para las filas y columnas del Flexgrid
    Dim Columna As Integer, Fila As Long
  
    'Matriz y variable para los anchos de columna
    Dim Ancho_Columna() As Single
    Dim Col_Width As Single
          
    'Redimensionar el Array a la cantidad de columnas
    ReDim Ancho_Columna(0 To FlexGrid.Cols - 1)
      
    'Recorrer las columnas para almacenar el ancho
    For Columna = 0 To FlexGrid.Cols - 1
        'Guarda el ancho de la  columna en la matriz
        Ancho_Columna(Columna) = TextWidth(FlexGrid.TextMatrix(0, Columna))
    Next Columna
      
    'Recorrer todas las filas del FlexGRid
    For Fila = 1 To FlexGrid.Rows - 1
              
        'Recorrer todas las Columnas
        For Columna = 0 To FlexGrid.Cols - 1
            COL_WITH = j
            ' Almacenar el ancho de la columna actual
            Col_Width = TextWidth(FlexGrid.TextMatrix(Fila, Columna))
              
            'Comparar cual es mayor
            If Ancho_Columna(Columna) < Col_Width Then
               Ancho_Columna(Columna) = Col_Width
            End If
        Next
    Next
  
    ' Establecer los anchos de columna al FlexGRid con la propiedad ColWidth
          
    For Columna = 0 To FlexGrid.Cols - 1
        FlexGrid.ColWidth(Columna) = Ancho_Columna(Columna) + 240
    Next
  
Exit Sub
  
'Error
ErrSub:
      
    MsgBox Err.Description, vbCritical
    FlexGrid.Redraw = True
End Sub

Public Function TextWidth(text As String) As Single
    TextWidth = Printer.TextWidth(text)
End Function