Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   para las columnas del dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=40065)

jhcaboverde 06-02-2007 18:44:24

para las columnas del dbgrid
 
alguien me puede ayudar con un ejemplo de como ajustar automaticamente el ancho de las columnas de un dbgrid por el titulo de la columna. es decir tengo un dbgrid que se actualiza al hacer click en un button entonces quiero que el ancho de las columnas se porga acorde al titulos de las mismas.

saludos y gracias de ante mano

Bicho 06-02-2007 18:50:28

Hola, revísate éste hilo y éste otro quizá te sirvan.

Saludos

Caral 06-02-2007 19:33:33

Hola
Ademas de lo dicho o enseñado por Bicho, te muestro un ejemplito:
Aqui indico el tamaño de seis columnas:
Código Delphi [-]
     DBGrid1.Columns[0].Width := 64;
     DBGrid1.Columns[1].Width := 190;
     DBGrid1.Columns[2].Width := 85;
     DBGrid1.Columns[3].Width := 85;
     DBGrid1.Columns[4].Width := 49;
     DBGrid1.Columns[5].Width := 94;
Ojala te sirva.
Saludos

jhcaboverde 06-02-2007 20:21:25

sobre el ancho de las columnas de un dbgrid
 
realmente lo que necesito es que se modifique al ancho de la columna mediante un codigo segun el ancho del nombre, es decir, que el ancho de la columna no tape parte del nombre ni le sobre espacio, eso lo vi en alguna parte pero no recuerdo.

fjcg02 06-02-2007 23:32:03

Prueba con este código, seguro que lo puedes modificar para que se adapte a lo que necesitas. No recuerdo de donde lo fusilé, pero fue por estos foros seguro

Un saludo


Código Delphi [-]
function TFrmQuick.CalcularAnchoColumnas( Campo: TField): integer;
var w:integer; TM:TTextMetric;
begin
//Result:= 64;
try
  Canvas.Font := QRLabel1.Font;
  GetTextMetrics(Canvas.Handle, TM);
  Result := Campo.DisplayWidth * Canvas.TextWidth('0') + 3;
  W := Canvas.TextWidth(Campo.DisplayLabel) + 3;
  if Result < W then  Result := W;
  if (Campo.Datatype = ftFloat)then
  begin
    w:= Canvas.TextWidth((Campo as tFloatField).Displayformat) + 4;
    if Result < W then  Result := W;
  end;
finally
end;
end;

jhcaboverde 07-02-2007 16:37:35

revisame este error a ver si me puedes ayudar
 
puse la funcion y la llamo desde el evento de create del form, mi duda es en el nombre de la funcion pones "TFrmQuick" que es esto?? no entiendo bien y no puedo modificarla para llevarla a lo que necesito.
errores que me da:

[Error] Unit1.pas(102): Function needs result type
[Error] Unit1.pas(107): Undeclared identifier: 'Canvas'
[Error] Unit1.pas(107): Undeclared identifier: 'QRLabel1'
[Error] Unit1.pas(108): Not enough actual parameters

te detallo mas mi duda: tengo un DBGrid, adotable y un datasource que pasa al abrir el form las columnas toman el ancho "que les da la gana" quiero que mediante un codigo tomen el tamano segun el nombre de la columna, es decir, que el tamano sea ancho del nombre de la columna.

no utilizo la propiedad ancho de columna del dbgrid como otros me han sujerido porque cambian de nombre.

un saludo y gracias por la atencion

kico

Lepe 07-02-2007 16:58:51

Creo que es mucho más simple de lo que se comenta:

Código Delphi [-]
for I:=0 to dbgrid.columns.count-1 do
with dbgrid.columns[i] do
  width := dbgrid.canvas.textwidth(Field.DisplayLabel)+10;

el +10 es por si quieres ordenar una columna y que aparezca el triangulito correspondiente.

saludos

jhcaboverde 07-02-2007 18:18:45

ancho de las calumnas de un grid segun su texto de encabezado
 
mil gracias, quedo perfeto me salta una duda que te la paso, al recibir la notificacion por correo el codigo que te pone no es igual, te lo pongo

Hola jhcaboverde,
Respuesta de..: Lepe
Título....:...: para las columnas del dbgrid
Foro..........: Varios
URL...........:
http://www.clubdelphi.com/foros/show...5&goto=newpost

=============== R E S P U E S T A ============================
Creo que es mucho más simple de lo que se comenta:

for I:=0 to dbgrid.columns.count-1 do
with dbgrid.columns do
width := dbgrid.canvas.textwidth(FieldName)+10;

el +10 es por si quieres ordenar una columna y que aparezca el
triangulito correspondiente.
saludos
=============== F I N A L R E S P U E S T A ===============

Lepe 07-02-2007 19:27:58

jajajajajaja

... es que.... edité el mensaje después de enviar la respuesta al foro, obviamente se envió la primera respuesta, no la edición posterior.

Razón del editado.... pues bueno, puede que el campo en la base de datos se llame nfactura pero en el displayLabel tengas puesto "Núm Factura" para que sea más bonito al usuario, así que decidí modificarlo.

Saludos.


La franja horaria es GMT +2. Ahora son las 15:57:23.

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