Shordi 31-03-2025, 19:18
Varias veces se ha tocado el tema a lo largo del tiempo de cómo adaptar el alto de las celdas de un Gridview a su contenido. Se han aportado varias soluciones y yo aporté en su día la mía, basada en la capacidad de hacer ese cálculo, pero para un Richtext, de la clase Font.

Sin embargo me he encontrado con que ninguna de esas soluciones me valía, bien por no trabajar con richtexts, bien por no ser demasiado fiables, así que he desarrollado otra basada en Text.
El código es una funcioncita llamada desde el evento Data del Gridview/TableView y es este:

Código:
Public Sub tv_Data(Row As Integer, Column As Integer)

  'rellenamos las celdas con el contenido de los campos.
  $res.MoveTo(row)
  If $cfields[tv.columns[column].title] = Gb.Boolean Then 'los campos booleanos según el picture de la celda
    If $res[tv.columns[column].title] = True Then
      tv[row, Column].Picture = Stock["24/ok"]
    Else
      tv[row, Column].Picture = Null
    Endif
  Else
    tv[row, column].Text = $res[tv.columns[column].title]  'Se guarda el texto en Text
    If $completos Then
      calcHeight(row, column) 'Se cambia el alto de la fila si es necesario.
    Endif
  Endif

End

Private Sub calcHeight(row As Integer, column As Integer)

  Dim nAlto, nAncho, anchoLinea As Integer
  Dim alineas, alinea As String[]
  Dim linea As String

  nAncho = tv.columns[column].W
  alineas = Split(tv[row, column].text, "\n")
  nAlto = alineas.Length
  For Each linea In alineas
    anchoLinea = tv[row, column].Font.TextWidth(linea)
    If ancholinea > nAncho Then
      If InStr(linea, " ") > 0 Then
        nAlto += Int(ancholinea / nancho)
      Endif
    Endif
  Next
  If nAlto > 1 Then
    tv.Rows[row].H = (nAlto * tv.Font.h) + tv.Rows.h
    tv[row, column].WordWrap = True
  Endif

End
Extraído del proyecto asociado a éste Video:


Espero que os sea útil.

Saludos
Shordi 31-03-2025, 19:10
TableZoom es un TableView que permite, haciendo Doble Click en el editor, hacer un zoom sobre el contenido de la celda para poder editar y/o ver dicho contenido.

Shordi 31-03-2025, 19:07
Como segunda parte del vídeo presentado en este hilo: https://gambas-es.org/thread-1910.html he subido un vídeo donde se utiliza un TableZoom en lugar de un TableView. Eso permite además de lo presentado en el otro vídeo, ampliar las celdas al editarlas de manera que se puedan poner textos largos y automatizar el alto de fila para que se muestren esos textos.

Para más detalles sobre TableZoom, visitar éste vídeo https://youtu.be/GjLH8WkJzi8 




Saludos
Páginas (565):    1 24 25 26 27 28 565   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 292
Último miembro: DarkWolf
Temas del foro: 1,744
Mensajes del foro: 9,045
Últimos temas
Poner color a titulo o ca...
Foro: General
Último mensaje por: Alberto59, Ayer, 20:58
Respuestas: 5 - Vistas: 145
Ultima fila en columnview
Foro: Controles/Librerías/Componentes
Último mensaje por: Alberto59, 11-11-2025, 14:18
Respuestas: 3 - Vistas: 122
Ordenar en un TableView
Foro: General
Último mensaje por: vuott, 11-11-2025, 01:14
Respuestas: 6 - Vistas: 307
Ordenando las carpetas
Foro: Programación en otros lenguajes
Último mensaje por: tincho, 08-11-2025, 09:48
Respuestas: 1 - Vistas: 165
Nuevo manual dinámico...
Foro: WebApp/WebForms
Último mensaje por: tincho, 08-11-2025, 09:43
Respuestas: 9 - Vistas: 2,605
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.