Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Auto Fit en MsFlexGrid

Estas en el tema de Auto Fit en MsFlexGrid en el foro de Visual Basic clásico en Foros del Web. Que tal amigos, como puedo hacer un Auto fit de las Columnas en un MsFlexGrid....
  #1 (permalink)  
Antiguo 07/11/2005, 15:55
 
Fecha de Ingreso: mayo-2005
Mensajes: 64
Antigüedad: 19 años
Puntos: 1
Auto Fit en MsFlexGrid

Que tal amigos, como puedo hacer un Auto fit de las Columnas en un MsFlexGrid.
  #2 (permalink)  
Antiguo 07/11/2005, 16:14
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Cita:
Iniciado por Shakaio
Que tal amigos, como puedo hacer un Auto fit de las Columnas en un MsFlexGrid.
bueno .. sería el autoajuste.. verdad... tendrías que contar el numero de caracteres que la columnas para darles en ancho..

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #3 (permalink)  
Antiguo 18/10/2006, 10:13
 
Fecha de Ingreso: junio-2006
Mensajes: 5
Antigüedad: 17 años, 10 meses
Puntos: 0
Proba con esto:

Public Sub AjustaColumnas(Rejilla As MSFlexGrid)
Dim oldFont As StdFont, oldScale As Integer
Dim AnchoText As Single, AnchoMax As Single
Dim c As Integer, r As Long

With Rejilla
Set oldFont = .Parent.Font
Set .Parent.Font = .Font
oldScale = .Parent.ScaleMode
.Parent.ScaleMode = vbTwips
For c = 0 To .Cols - 1
AnchoMax = .Parent.TextWidth(.TextMatrix(0, c)) + 256
For r = 0 To .Rows - 1
AnchoText = .Parent.TextWidth(.TextMatrix(r, c)) + 256
If AnchoText > AnchoMax Then AnchoMax = AnchoText
Next r
.ColWidth(c) = AnchoMax
Next c
Set .Parent.Font = oldFont
.Parent.ScaleMode = oldScale
.Row = 0
End With
End Sub
  #4 (permalink)  
Antiguo 20/10/2006, 12:52
Avatar de onlykfk  
Fecha de Ingreso: agosto-2005
Ubicación: 20°45' Latitud Norte 100°
Mensajes: 121
Antigüedad: 18 años, 8 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
  #5 (permalink)  
Antiguo 24/10/2006, 11:13
 
Fecha de Ingreso: junio-2006
Mensajes: 5
Antigüedad: 17 años, 10 meses
Puntos: 0
Auto ajustar las columnas

Muy bueno tu codigo pero la verdad quiero probarlo en un MSHFlexGrid

error:

AjustaColumnas ' el argumetro no es opcional

que puede ser?
Gracias
  #6 (permalink)  
Antiguo 24/10/2006, 11:46
Avatar de onlykfk  
Fecha de Ingreso: agosto-2005
Ubicación: 20°45' Latitud Norte 100°
Mensajes: 121
Antigüedad: 18 años, 8 meses
Puntos: 1
La llamada al procedimiento requiere forzoso envio del parámetro rejilla el cual hace referencia al grid ke vas a ajustar, los otros dos parametros si son opcionales

Código:
Call AjustaColumnas( MSHFlexGrid1 [, True][, False])
Saludos
__________________
Yo tan sólo se, que no he senado
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:38.