Ir al contenido


Foto

Problemas con el ancho de columnas en un DBGrid


  • Por favor identifícate para responder
3 respuestas en este tema

#1 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 776 mensajes
  • LocationPinar del Río, Cuba

Escrito 28 enero 2011 - 10:45

Hola a todos
Pues sucede que tengo un DBGrid que cuando abro Delphi se me le cambia el tamaño del ancho de las columnas, se las arreglo y guardo los cambios, mientras tengo delphi abierto no me da mas problemas, pero a veces cuando vuelvo al delphi para seguir trabajando, me encuentro que se le modifico nuevamente el tamaño a todas las columnas

Por que sucederá esto?
Como hacer para que no suceda mas?

En las propiedad dgColumnResize le puse False, aunque con True me hace lo mismo

:sad:
  • 0

#2 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 28 enero 2011 - 12:39

Tienes los campos agregados a las columnas del dbgrid? por lo que dices pareciese que no  ;)
  • 0

#3 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 776 mensajes
  • LocationPinar del Río, Cuba

Escrito 28 enero 2011 - 01:50

Pues si, les fijo el ancho en el editor de columnas del DBGrid
Lo mas raro del caso es que me lo hace solo a veces  8o|

Tenia un campo texto grande, pienso que por eso se me agrandaba la columna  *-) le disminui el tamaño del campo, y ya la columna no se ensancho mas, pero despues todas se pusieron del mismo tamaño (diferente al que yo le fije)

Revisare los tamaños de los otros campos texto, para ver que sucede




  • 0

#4 andres1569

andres1569

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 431 mensajes

Escrito 29 enero 2011 - 05:46

Hola JoAnCa,

Me temo que algo falla en el mecanismo de Delphi a la hora de asignar los anchos de las columnas del DBGrid en diseño. He mirado en el código de la VCL y es un sistema algo rebuscado, cada vez que asignas una propiedad de una columna, objeto TColumn, ese valor se guarda o no dependiendo de un flag interno llamado IsStored, y además se lleva una relación de las propiedades que se han cambiado para saber si se deben almacenar o no (en el .DFM), así más tarde, cuando se carga el formulario, el Grid sabe de dónde debe tomar los valores, si del TColumn, del Grid o del DataSet vinculado (un pequeño jaleo que creo es la causa de estos problemas).

Tras hacer algunas pruebas, también me han sucedido comportamientos extraños, redimensionaba con el ratón las columnas y en unas ocasiones al reabrir el DataSet las columnas volvían a un tamaño diferente, y más tarde he conseguido que se quedaran como las dejé.

Podrías probar, si tienes los campos del DataSet definidos como persistentes, de asignarles la propiedad DisplayWidth, y en teoría las columnas de los DBGrids que vincules deberían tomar ese ancho. Supongo que esto no sucede en todas las versiones de Delphi y que estará corregido en alguna, yo lo acabo de probar en Delphi 4, algo antiguo ya,  :)


Saludos
  • 0




IP.Board spam blocked by CleanTalk.