Visual Basic - Ajustar MSFlexGrid

Life is soft - evento anual de software empresarial
 
Vista:

Ajustar MSFlexGrid

Publicado por Jimmy Torres Fonseca (134 intervenciones) el 06/01/2009 17:34:32
Deseo recorrer un MSFlexGrid y ajustar el ancho de la columna al ancho que abarca la palabra más larga escrita en alguna de las filas de esa columna...

Saludos!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ajustar MSFlexGrid

Publicado por Alguien (8 intervenciones) el 06/01/2009 18:39:17
El siguiente procedimiento recorre un MSFlexGrid y lo ordena segun longitud de cadena

Public Sub AjustarGrid()
Dim fila As Integer
Dim columna As Integer
Dim ancho As Integer

With MiGrid 'El MSFlexGrid
For columna = 0 To .Cols - 1
ancho = 0

For fila = 0 To .Rows - 1
If TextWidth(.TextMatrix(fila, columna)) > ancho Then
ancho = TextWidth(.TextMatrix(fila, columna)) + 240
End If
Next fila

.ColWidth(columna) = ancho
Next columna
End With
End Sub

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ajustar MSFlexGrid

Publicado por Desire (24 intervenciones) el 08/01/2009 11:47:57
Hola Veo el código y me parece bien, pero cuando lo ejecuto paso a paso no sé porque en la decisión

If TextWidth(.TextMatrix(fila, columna)) > ancho Then

NO obtiene el contenido de la celda para esa fila y columna es decir es igual a cero y por lo tanto nunca entra en la decisión.

Alguien sabrá porque no toma el texto de la celda

Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ajustar MSFlexGrid

Publicado por Alguien (8 intervenciones) el 08/01/2009 14:17:44
Bueno la verdad a mi el código me corre perfectamente, lo único es que no funciona en módulos ya que TextWidth toma el ancho de letra del formulario, trata de revisar los nombres de las variables que esté escritos correctamente, en especial del MSFlexGrid y si declarastes bien las variables fila y columna o si les estás dando valores previos o algo por el estilo...

Bueno la verdad solo eso se me ocurre por el momento...

P.D.: si deseas puedes poner el código que estás utilizando siempre y cuando no sea exactamente igual al que puse, así podré correrlo y ver si me sucede igual...

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ajustar MSFlexGrid

Publicado por Desire (5 intervenciones) el 09/01/2009 11:00:53
Gracias

Ya me funcionó es que no sé porque en el procedimiento Load del formulario no trabaja, lo coloqué en otro sitio y perfecto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Ajustar MSFlexGrid

Publicado por Nigel Caro (2 intervenciones) el 22/05/2014 23:55:19
Me pasó exactamente lo mismo, puse en una primera instancia la funcion en un modulo standar como funcion publica, pero me arrojaba el mismo error.

Cambie la funcion al formulario directamente donde la ocupo y funciona perfectamente sin problemas!, si alguien aun busca este tipo de codigo en la web, este funciona sin problemas! probado!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ajustar MSFlexGrid - Solución mejorada

Publicado por Adrian (1 intervención) el 08/09/2021 15:09:39
Gente Ahi acomode la función para que se pueda meter en un modulo .. así la podes reutilizar en distintos formularios , solo hay que agregarle la referencia de FORM y además ya que estamos le pasamos el MSFleXGrid también por referencia .

Anda de 10 !!: NO se si al día de hoy le servirá a alguien pero por las dudas lo comparto .

Abría que llamarla asi desde el formulario que se quiera usar

1
Call AjustarGrid(Me, ELGRIP )


Luego la función en SI , para agregarla en algún modulo compartido y reutilizarla en la aplicación

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Public Sub AjustarGrid(ByRef oFrm As Form, ByRef MiGrid As MSFlexGrid)
    Dim fila As Integer
    Dim columna As Integer
    Dim ancho As Integer
 
    With MiGrid 'El MSFlexGrid
        For columna = 0 To .Cols - 1
            ancho = 0
 
            For fila = 0 To .Rows - 1
                If oFrm.TextWidth(.TextMatrix(fila, columna)) > ancho Then
                ancho = oFrm.TextWidth(.TextMatrix(fila, columna)) + 240
                End If
            Next fila
 
            .ColWidth(columna) = ancho
        Next columna
    End With
End Sub

Bueno espero les sirva , se ve que VB6 todavía sigue dando batalla hasta en windows 10 !! . je .
Saludos. Adrián
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ajustar MSFlexGrid - Solución mejorada

Publicado por Nigel (2 intervenciones) el 08/09/2021 16:33:30
Buen aporte, por asuntos de la vida ya no programo, en ningún lenguaje, pero me llamo la atención que aun haya gente buscando este tipo de codigos, buen aporte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ajustar MSFlexGrid - Solución mejorada

Publicado por Daniel (1 intervención) el 27/04/2022 19:51:32
Excelente, en 2022 y aun funciona!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar