Shordi   31-03-2025, 19:18
#1
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

No podemos regresar
Shell   31-03-2025, 22:22
#2
Gracias!.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.