A veces cuando rellenamos una fila de estos componentes.No se ajustan los tamaños automáticamente al contenido
del texto.(La columna de titulo).
Solemos dar unos valores de ancho a las celdas que pueda tener un componente como TableView,ColumView y GridView.
Encontré una forma que es,según el tamaño de la fuente y el texto,se adapta el ancho o alto de la celda a este, aproximadamente.
El verdadero problema que me encontré es que debe recordarse cada tamaño de celda de un registro para saber si el siguiente
es mayor que el anterior, si no volveremos a tener que jugar haciendo click en cada columna que nos interese.
Que lo mismo hay un evento para esto y solo es cuestión de llamarlo.
Hice este ejemplo:
Como veis no tienen un tamaño establecido las columnas.
Y el código es este:
Private filas As Integer
Public Sub _new()
End
Public Sub Form_Open()
Me.Center
Me.Caption = "Práctica con TableView"
Tabla = titulos(Tabla)
txtNombre.SetFocus
filas = 0
End
Public Function titulos(hTabla As TableView) As TableView
With hTabla
.Header = 3
.Columns.Count = 5
.Columns[0].Title = "Nombre"
.Columns[1].Title = "Apellidos"
.Columns[2].Title = "Dirección"
.Columns[3].Title = "Ciudad"
.Columns[4].Title = "C.P"
End With
Return hTabla
End
Public Sub btnSalir_Click()
Me.Close
End
Public Sub btnInsertar_Click()
Dim cajatexto As Object
If txtNombre.Text <> "" And txtApellidos.Text <> "" And txtDireccion.Text <> "" And txtCiudad.Text <> "" And txtCP.Text <> "" Then
Tabla.Rows.Count = filas + 1
Tabla[filas, 0].Text = txtNombre.Text
Tabla.Columns[0].Width = tamcelda(txtNombre)
Tabla[filas, 1].Text = txtApellidos.Text
Tabla.Columns[1].Width = tamcelda(txtApellidos)
Tabla[filas, 2].Text = txtDireccion.Text
Tabla.Columns[2].Width = tamcelda(txtDireccion)
Tabla[filas, 3].Text = txtCiudad.Text
Tabla[filas, 4].Text = txtCP.Text
filas += 1
For Each cajatexto In FMain.Controls
If cajatexto Is TextBox Then
cajatexto.Text = ""
Endif
Next
txtNombre.SetFocus
Else
Message.Info("Te falta algun campo por rellenar")
Endif
End
Public Function tamcelda(cajatexto As TextBox) As Integer
Return (cajatexto.Font.TextWidth(cajatexto.Text)) * 1.1
End
Public Sub _new()
End
Public Sub Form_Open()
Me.Center
Me.Caption = "Práctica con TableView"
Tabla = titulos(Tabla)
txtNombre.SetFocus
filas = 0
End
Public Function titulos(hTabla As TableView) As TableView
With hTabla
.Header = 3
.Columns.Count = 5
.Columns[0].Title = "Nombre"
.Columns[1].Title = "Apellidos"
.Columns[2].Title = "Dirección"
.Columns[3].Title = "Ciudad"
.Columns[4].Title = "C.P"
End With
Return hTabla
End
Public Sub btnSalir_Click()
Me.Close
End
Public Sub btnInsertar_Click()
Dim cajatexto As Object
If txtNombre.Text <> "" And txtApellidos.Text <> "" And txtDireccion.Text <> "" And txtCiudad.Text <> "" And txtCP.Text <> "" Then
Tabla.Rows.Count = filas + 1
Tabla[filas, 0].Text = txtNombre.Text
Tabla.Columns[0].Width = tamcelda(txtNombre)
Tabla[filas, 1].Text = txtApellidos.Text
Tabla.Columns[1].Width = tamcelda(txtApellidos)
Tabla[filas, 2].Text = txtDireccion.Text
Tabla.Columns[2].Width = tamcelda(txtDireccion)
Tabla[filas, 3].Text = txtCiudad.Text
Tabla[filas, 4].Text = txtCP.Text
filas += 1
For Each cajatexto In FMain.Controls
If cajatexto Is TextBox Then
cajatexto.Text = ""
Endif
Next
txtNombre.SetFocus
Else
Message.Info("Te falta algun campo por rellenar")
Endif
End
Public Function tamcelda(cajatexto As TextBox) As Integer
Return (cajatexto.Font.TextWidth(cajatexto.Text)) * 1.1
End
La función añade un 10% mas de tamaño a la celda en cuestión.
Llega un momento que se va a dejar de ver bien si el tamaño de la siguiente es mas pequeño.
Entonces, creo que si hago un array que conserve los tamaños anteriores y los compares con los nuevos de los siguientes texto.
El tamaño se ajuste al mayor,siempre.
Si tenemos 5 campos.Pues el array tamcelda[0],tamacelda[2]...tamacelda[4], se comparan con el actual tamaño nuevo de cada campo
y si es mayor se cambia el ancho, que no, pues se deja el valor que estaba en el array.
Tengo que hacerlo.
Os añado el código fuente por si queréis probar también vosotros.Es para gambas 3.1.1
Creo que es algo que nos interesa a todos, por que luego quedan mal las columnas.
Saludos.
EjemploTableView.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | EjemploTableView.tar.gz | |
Tamaño: | 7.24 KB | |
Descargado: | 58 veces |
EjemploTableView.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | EjemploTableView.tar.gz | |
Tamaño: | 7.24 KB | |
Descargado: | 58 veces |
EjemploTableView.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | EjemploTableView.tar.gz | |
Tamaño: | 7.24 KB | |
Descargado: | 58 veces |