Ver Mensaje Individual
  #4 (permalink)  
Antiguo 20/10/2006, 12:52
Avatar de onlykfk
onlykfk
 
Fecha de Ingreso: agosto-2005
Ubicación: 20°45' Latitud Norte 100°
Mensajes: 121
Antigüedad: 19 años, 3 meses
Puntos: 1
Muy buen ejemplo, me sirvio de mucho, sin embargo le hice algunas modificaciones para que sea mas interactivo:
- Cambie parametro por uno de tipo MSHFlexgrid aunque funciona con ambos
- Dos parametros mas para indicar donde va el ajuste (Columnas o renglones)
- Ajusta tanto columnas como renglones

Entonces quedó así:
Código:
'Recibe de parametros:
' Object: Con esto se debera entender que puede ser un MSFlexGrid o un MSHFlexGrid
' AjustarColumnas: Para indicar si requiere ajuste de columnas (Si se omite se da por hecho que requieran ajuste)
' AjustarRenglones: Para indicar si requiere ajuste de renglones (Si se omite se da por hecho que requieran ajuste)
Public Sub AjustaColumnas(Rejilla As MSHFlexGrid, Optional AjustarColumnas As Boolean = True, Optional AjustarRenglones As Boolean = True)
    Dim oldFont As StdFont, oldScale As Integer
    Dim AnchoText As Single, AnchoMax As Single, AltoMax As Single
    Dim c As Integer, r As Long
    Dim margenArriba_Abajo As int, margenDerecha_Izquierda As Int
    margenArriba_Abajo = 100 'Modificar valores
    margenDerecha_Izquierda = 250 'Modificar valores
    With Rejilla
        Set oldFont = Me.Font
        Set Me.Font = .Font
        oldScale = Me.ScaleMode
        Me.ScaleMode = vbTwips
    'Primero: las columnas
        'AnchoMax = Me.TextWidth(.TextMatrix(0, 0))
        If AjustarColumnas Then
            AnchoMax = Me.TextWidth(.TextMatrix(0, c)) + margenDerecha_Izquierda 
            For c = 0 To .Cols - 1
                For r = 0 To .Rows - 1
                    AnchoText = Me.TextWidth(Trim(.TextMatrix(r, c))) + margenDerecha_Izquierda 
                    If AnchoText > AnchoMax Then AnchoMax = AnchoText
                Next r
                .ColWidth(c) = AnchoMax
            Next c
        End If
    'Segundo: los renglones
        If AjustarRenglones Then
            For r = o To .Rows - 1
                AltoMax = Me.TextHeight(Trim(.TextMatrix(r, 0))) + margenArriba_Abajo 
                For c = 0 To .Cols - 1
                    AltoText = Me.TextHeight(.TextMatrix(r, c)) + margenArriba_Abajo 
                    If AltoText > AltoMax Then AltoMax = AltoText
                Next c
                .RowHeight(r) = AltoMax
            Next r
        End If
        Set Me.Font = oldFont
        Me.ScaleMode = oldScale
        .Row = 0
    End With
End Sub
__________________
Yo tan sólo se, que no he senado