Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Autoajustes de campos. (https://www.clubdelphi.com/foros/showthread.php?t=14499)

sur-se 22-09-2004 17:22:42

Autoajustes de campos.
 
Hola, tengo una DBGrid asociada a una tabla en la que los campos que se muestran en la rejilla pueden variar en función de la configuación del usuario. Debido a que la zona de la pantalla en la que se encuentra la rejilla tiene una anchura limitada, me gustaría que la anchura de las columnas del dbgrid se ajustara automáticamente a la anchura del registro más ancho de cada columna. De esa forma siempre estaría optimizado al máximo las columnas y el espacio disponible. El problema es que la DBGrid ahora casi lo hace, es decir, en los campos pequeños lo hace bien, pero si el campo es texto y es grande (30 o 40 caracteres) siempre corta el final en todos. Además no quiero que el usuario tenga que estar redimensionando las columnas de forma manual.
¿Existe alguna forma de que el DBGrid autoajuste automáticamente la anchura de las columnas al valor más ancho de cada columna?
Salu2.

German 27-09-2004 13:55:01

No existe un método asociado al dbGrid que haga eso, que yo sepa, pero, dando por hecho que la fuente del dbgrid va a ser siempre la misma, te puedes "inventar" una manera de controlarlo, guardando el ancho máximo que alcance una columna en el evento afterpost de la tabla. O sea, calcula en este evento el ancho en puntos que va a ocupar cada campo en el dbgrid, utilizando el método dbGrid1.Canvas.TextWidth('Texto que ha guardado el campo'). Si el ancho supera el último valor guardado, lo sustituyes. Estos valores los utilizas al abrir el form que tenga el dbgrid para configurar el ancho de cada columna, y listo.

Salu2.


La franja horaria es GMT +2. Ahora son las 06:45:57.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi