Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ajustar columnas en dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=74530)

ingabraham 24-06-2011 01:36:33

Ajustar columnas en dbgrid
 
Necesito ajustar los datos de las columnas en un dbgrid.

tengo el sgte codigo , pero no me deja desplazarme bien por las celdas , ni dar doble clic algunas celdas.

Código Delphi [-]
Procedure DBGridMostrarDatosDrawColumnCell(Sender: TObject; /...

if length(Column.Field.AsString) > Column.Field.Tag then
begin
  Column.Field.Tag:= length(Column.Field.AsString);
  Column.Field.DisplayWidth:=Column.Field.Tag+2;
end;

quien tiene otro o me pueda ayudar en este problema con el codigo

ecfisa 24-06-2011 01:48:20

Hola.

.Ajuste de columnas en un DBGrid
.para las columnas del dbgrid
.AutoAjustar un dbgrid

Saludos.

ingabraham 04-07-2012 16:09:41

ninguno me sirve, no hace lo que quiero

auto ajustar todos los campos a la maxima longitud del mayor dato en cada celda

uno de esto lo hace pero tomando como referencia la longitud del tamanno del nombre del campo

Casimiro Notevi 04-07-2012 17:16:17

Hombre, un poco de esfuerzo, ahí tienes la idea de cómo se hace, tampoco te vamos a escribir el código completo a tu programa, ¿no? :confused:

ingabraham 07-07-2012 03:40:12

no pues, gracias x la ayuda.
les pregunto por que no tengo idea como podria hacerlo.

Casimiro Notevi 07-07-2012 08:17:30

Cita:

Empezado por ingabraham (Mensaje 436695)
uno de esto lo hace pero tomando como referencia la longitud del tamanno del nombre del campo

Te puede servir ese que comentas, en lugar del nombre del campo debes escoger el dato que se va a presentar. Y repetir el proceso por cada columna.
Puede ser engorroso, pero no hay otra opción, tienes que comprobar por cada columna para encontrar la que tiene más anchura, no te queda otra.

juanlaplata 13-07-2012 19:48:36

este codigo ajusta el ancho de la colunma de un DBGrid a el maximo entre la cantidad de letras del titulo y de la cantidad de letras del dato de la primier fila y columna correspondiente.
Lo q no quita q mas abajo el ancho de columna deba cambiar .
Para eso, deberias calcular 1ro, cual sera el ancho max para cada columna, con el costo q eso trae ..

Código Delphi [-]
for i:= 0 to Grilla.Columns.Count-1 do
    begin
    Grilla.Columns[i].Title.Alignment:= taCenter;
    Grilla.Columns[i].Width :=
          Max((Grilla.Canvas.TextWidth(Grilla.Columns[i].Field.AsString)+20),
              (Grilla.Canvas.TextWidth(Grilla.Columns[i].Title.Caption)+10))
               ;
    end;

ingabraham 14-07-2012 18:47:42

Cita:

Empezado por ingabraham (Mensaje 404679)
Necesito ajustar los datos de las columnas en un dbgrid.

tengo el sgte codigo , pero no me deja desplazarme bien por las celdas , ni dar doble clic algunas celdas.

Código Delphi [-]
Procedure DBGridMostrarDatosDrawColumnCell(Sender: TObject; /...

if length(Column.Field.AsString) > Column.Field.Tag then
begin
  Column.Field.Tag:= length(Column.Field.AsString);
  Column.Field.DisplayWidth:=Column.Field.Tag+2;
end;

quien tiene otro o me pueda ayudar en este problema con el codigo


Este codigo hace lo que quiero, si no que se me bloquea al recorrer los registros.

mapashhe 06-08-2012 07:33:49

Buenas, yo tambien tengo el mismo problema! Me gustaria unicamente darle un tamaño fijo a las columnas, unicamente para que puedan verse todas pero no me las he podido ingeniar! he intentado muchas cosas que lei por este foro pero todas terminan igual: Si me ayudan y las hacen mas chicas, pero no me deja desplazarme por las celdas, se recorre solo hasta la ultima celda en la columna y no me deja visualizar los primeros renglones.. alguien sabe que puedo hacer?

Tambien he intentado instalando otras grids, pero todas me tiran alguna clase de error al momento de instalarlas o si se instalan pero al momento de querer compilar el programa me tira un error de que no existe la libreria de dicho grid ;c AYUDA PLS!

Tengo delphi 7 y uso access 2010 (pero guarde la base como .mdb, de access 2003)

un saludo y gracias de adelantado!

Casimiro Notevi 06-08-2012 09:36:38

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración :)

mapashhe 06-08-2012 20:20:35

Ok amigo, la he leido, muchas gracias.. ahora alguna ayudita?

Casimiro Notevi 06-08-2012 20:52:26

Gracias por tu colaboración, aunque debes de haberla leído muy de pasada ;)

Por cierto, al final de esta página tienes más enlaces que pueden servirte, ya que no te ha servido nada de lo comentado aquí. No sabemos el motivo.

ecfisa 06-08-2012 21:15:26

Cita:

Empezado por mapashhe (Mensaje 438922)
Ok amigo, la he leido, muchas gracias.. ahora alguna ayudita?

Hola mapashhe.

A ver... probá de este modo:
Código Delphi [-]
procedure SetGridColumnWidths(aDBGrid: TDBgrid);
const
  DEFBORDER = 10;
var
  temp, n: Integer;
  lmax: array [0..30] of Integer;
begin
  with aDBGrid do
  begin
    DataSource.DataSet.DisableControls;
    try
      Canvas.Font := Font;
      for n := 0 to Columns.Count - 1 do
        lmax[n] := Canvas.TextWidth(Fields[n].FieldName) + DEFBORDER;
      DataSource.DataSet.First;
      while not DataSource.DataSet.EOF do
      begin
        for n := 0 to Columns.Count - 1 do
        begin
          temp := Canvas.TextWidth(trim(Columns[n].Field.DisplayText)) + DEFBORDER;
          if temp > lmax[n] then lmax[n] := temp;
        end; {for}
        DataSource.DataSet.Next;
      end;
      DataSource.DataSet.First;
      for n := 0 to Columns.Count - 1 do
        if lmax[n] > 0 then
          Columns[n].Width := lmax[n];
    finally
      DataSource.DataSet.EnableControls;
    end;
  end;
end;
Y tiene razón Casimiro: Hay que usar más la búsqueda.

Estoy seguro de haber puesto este código en otra oportunidad y si mal no recuerdo el amigo Chris puso en el mismo hilo uno no tan exácto pero si mucho mas rápido.

Saludos.

Edito: Y como buscando, al final se encuentra... aquí el enlace: [ Tamaño de fuente en píxeles ] ;)


La franja horaria es GMT +2. Ahora son las 11:53:44.

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