Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Ajustar El Tamaño De Una Celda
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Ajustar El Tamaño De Una Celda 
 
Hola Comunidad!.

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:

 tabla

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
 


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: 49 veces
EjemploTableView.tar.gz
Descripción:  
Descargar
Nombre del archivo: EjemploTableView.tar.gz
Tamaño: 7.24 KB
Descargado: 49 veces
EjemploTableView.tar.gz
Descripción:  
Descargar
Nombre del archivo: EjemploTableView.tar.gz
Tamaño: 7.24 KB
Descargado: 49 veces

 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ajustar El Tamaño De Una Celda 
 
Al final fue bien con el uso de un array para guardar los valores mas grandes de ancho de celda.

Private filas As Integer
Private tcelda[5] As Integer

Public Sub _new()

End

Public Sub Form_Open()
  Dim x As Integer  
    Me.Center
    Me.Caption = "Práctica con TableView"
    Tabla = titulos(Tabla)
    txtNombre.SetFocus
    filas = 0
    For x = 0 To 4
        tcelda[x] = -99
    Next
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
  Dim cajatextotemp As TextBox
  Dim ttemp As Integer 'Declaro esta variable para evitar más de un llamamiento a la función
  Dim x As Integer
    
  If txtNombre.Text <> "" And txtApellidos.Text <> "" And txtDireccion.Text <> "" And txtCiudad.Text <> "" And txtCP.Text <> "" Then
    Tabla.Rows.Count = filas + 1
        
  For x = 0 To 4
  
    Select Case x      
      Case 0
         cajatextotemp = txtNombre
      Case 1
         cajatextotemp = txtApellidos  
      Case 2
          cajatextotemp = txtDireccion
      Case 3
          cajatextotemp = txtCiudad
      Case 4
          cajatextotemp = txtCP          
    End Select
    
    Tabla[filas, x].Text = cajatextotemp.Text
    ttemp = tamcelda(cajatextotemp)
    If ttemp > tcelda[x] And Tabla.Columns[x].Width < ttemp Then
      Tabla.Columns[x].Width = ttemp  
      tcelda[x] = Tabla.Columns[x].Width
    Endif
    
  Next
  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
 


Lo cierto es que estoy perdiendo una pasta en monólogos.
Si llego a saber que esto era lo mio me hago de oro en el club de la comedia.


Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Sabado, 26 May 2012, 23:26; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ajustar El Tamaño De Una Celda 
 
Shell:

Tus monologos son muy interesantes....   


Seguro que mucha gente lo reutilizaran en sus programas.

Gracias por compartir tus aportes con todos    

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ajustar El Tamaño De Una Celda 
 
Gracias Julio.

Saludos.
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ajustar El Tamaño De Una Celda 
 
jajaja!.
Buen buen.
Que envidia eso de ser tan creativo....
 



 
arubioc - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ajustar El Tamaño De Una Celda 
 
arubioc:

El problema de la creatividad, es tener la idea y no saber como llevarlo a cabo.
No saber desarrollarla por falta de conocimiento.

Por otro lado, según el conocimiento de cada uno,no saber hacerlo de otra manera que
a lo mejor es mas productiva por que no conoces otra.Es limitarse mucho.
Cuestión de tiempo.Para un profesional ni en broma.

Si yo se hacer un programa con programación estructurada pero con programación
objeto no tengo ni idea, me quedo con la duda y las ganas.

Y ahora viene el problema como puedo aprender a entender la POO y desarrollar para gambas,
cuando no encuentro los recursos que se salgan de lo normal. Necesito aprender mas lenguajes
y sacar tiempo para llevarlo acabo.

Para muchos de nosotros que no somos programadores tiene que ser bastante
fastidioso no poder llegar a cabo lo que quieres.Por mucho que te esfuerzas.
Y tienes que dejar pasar el tiempo para ganar experiencia y luego aquel  proyecto
que tanto te gustaba,ya no te parece tan importante como antes.

Ojala  pueda ver que gambas llegue a ser tan importante como cualquier
lenguaje que manejen mucha pasta.

Saludos.
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ajustar El Tamaño De Una Celda 
 
Si teneis razon, yo pongo hras de trabajo, para aprender, y no salgo de lo mismo, haber cuando se bastante como para hacer el programa que estoy intentando crear desde que empece.
Aunque al ritmo que voy, tardare unos meses, hay un colega que se ha ofrecido a ayudarme, haber si asi gano un poco de tiempo y aprendo mas rápido.
 



 
tonixs - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron