Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   longitud de Celdas en DBGRID (https://www.clubdelphi.com/foros/showthread.php?t=18459)

Enan0 13-02-2005 00:31:09

longitud de Celdas en DBGRID
 
Hola amigos estoy utilizando DELPHI 6 y tengo una dbgrid al cual quiero modificarle la longitud de las celdas, de forma automatica claro. (por codigo) alguien sabe como hacerlo?

gracias

marcoszorrilla 13-02-2005 11:38:46

Hay que afinarlo, pero algo como esto, recorriendo toda la colección de campos:
Código Delphi [-]
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 DbGrid1.Columns.Items[2].Width:=Query1.Fields[2].Size * Dbgrid1.Font.Size ;
 end;
Un Saludo.

Lepe 13-02-2005 11:42:40

el ancho de cada columna se ajusta segun la propiedad DisplayWith del campo asociado a cada columna. Modificando esa propiedad, y reabriendo el dataset, consigues que el texto se ajuste.

Código Delphi [-]
procedure AjustaDisplayWidth(D:TDataSet;const MaxAncho:Integer = 150);
var i, nIdx:Integer;
begin
if D.Active then
begin
  try
  D.DisableControls;
  D.First;
  nIdx:=0;
  while not D.Eof do
  begin
     for i:=0 to pred(D.FieldCount) do
     begin
          // en la 1ª vuelta reseteo el displayWidth existente
          if (nIdx = 0) then
            D.Fields[i].DisplayWidth  := 1;
          D.Fields[i].DisplayWidth  :=EnsureRange(
                                                  Max(  D.Fields[i].DisplayWidth,
                                                        Length(D.Fields[i].AsString)+
 IfThen(D.Fields[i].DataType = ftFloat, 3,0) 
// añadimos espacios para ,00
                                                      ),
                                                  0,MaxAncho);
     end;
     D.Next;
     Inc(nIdx);
  end;
  finally
    D.EnableControls;
  end;
end; // D.active
end;
Despues de hacer esto quizás tengas que hacer un DBgrid1.rebuildcolumns.


Saludos

Lepe 13-02-2005 11:47:33

Se me adelantó marcos teniendo en cuenta el tipo de fuente usada, yo simplemente pongo la courier jeje.

saludos de nuevo

Enan0 15-02-2005 20:12:59

Chicos Un millon de gracias a cada uno.. Porque la verdad no sabia como hacerlo..
Ultra agradesido!!! :D

sakuragi 30-05-2005 23:32:43

hola que tal

disculpen la pregunta

donde encuentro la propiedad DisplayWith

que no la encuentro por ninguna parte


gracias

jachguate 31-05-2005 00:52:58

DisplayWidth es una propiedad de los TField asociados a cualquier dataset. Si creas campos persistentes, lo podes establecer en tiempo de diseño, si no, solo en ejecución.

Hasta luego.

;)

sakuragi 31-05-2005 02:45:31

hola que tal, gracias por responder

ya localise donde esta el tfield lo que en tiendo es como le hago para empesar el procedure:

Cita:

procedure AjustaDisplayWidth(D:TDataSet;const MaxAncho:Integer = 150);
como accedo a el?

saludos

jachguate 31-05-2005 16:22:01

¿al procedure?

Pues simplemente:

Código Delphi [-]
begin
  AjustaDisplayWidth(MiTabla);
  // o bien
  AjustaDisplayWidth(MiTabla, 200);
end;

hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 17:52:15.

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