Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ancho de columnas segun contenido (https://www.clubdelphi.com/foros/showthread.php?t=29337)

YaninaGenia 19-01-2006 15:10:29

Ancho de columnas segun contenido
 
Buenas,
tengo que ajustar el ancho de algunas columnas de un stringgrid y quiero tomar el maximo de toda la grilla de esa columna pero si pregunto por el contenido me da un numero mucho menor.
Mi codigo es:
Código:

            if (Grilla.ColWidths[j] < length(Grilla.Cells[j,i])) then
              Grilla.ColWidths[j] := length(Grilla.Cells[j,i]);
              //ajusto el ancho si era menor

El ancho da como 60 y el contenido me da 15 pero aun asi sale tapadito. Alguno sabe como lo puedo solucionar?

Yanina Genia

Neftali [Germán.Estévez] 19-01-2006 15:36:32

Usando la función Lenght obtienes el ancho en caracteres, mientras que el width de la columna debes dárselo en pixels.
Lo que necesitras es saber el ancho en pixels del contenido de la celda.
Para ello puedes utilizar TCanvas.TextWidth.

YaninaGenia 19-01-2006 16:35:46

Ahhh
 
Ahi esta, que pelotuda que soy!!!
El codigo es
Código:

if (Grilla.ColWidths[j] <  Grilla.Canvas.TextWidth(Grilla.Cells[j,i])) then
  Grilla.ColWidths[j] := Grilla.Canvas.TextWidth(Grilla.Cells[j,i]);

Muchas gracias nene!!!

Neftali [Germán.Estévez] 19-01-2006 17:11:37

Supongo que éste código lo tienes en un bucle que recorre todas las filas; Como consejo te diría que dentro del bucle te apuntes el nuevo ancho en una variables, pero que no lo cambies hasta el final (una vez fuera del bucle), ya que hacerlo dentro (Grilla.ColWidths := ...) te va a acarrear muchos "eventos Paint" durante todo el cálculo, cosa que si lo haces al final evitarás.


La franja horaria es GMT +2. Ahora son las 19:32:43.

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