Ver Mensaje Individual
  #2  
Antiguo 10-08-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Reputación: 19
jmariano Va por buen camino
Saludos!

Habría dos formas de hacer lo que pides, una es ajustar el ancho del grid según las columnas que contenga y otra es ajustar el ancho de cada columna hasta completar el ancho del grid. Tanto para una forma como para la otra, tendrías que añadir un método al formulario que contenga el DBGrid e invocarlo cada vez que se ejecute el query.

- Ajustar el ancho del grid según las columnas que contenga:

Código Delphi [-]
procedure AjustarGrid;
var
  I: Integer;
begin
  DBGrid.Width := 40; // Deja espacio suficiente para el indicador de fila y la barra vertical 
 
  for I := 0 to DBGrid.Columns.Count - 1 do
    DBGrid.Width := DBGrid.Width + DBGrid.Columns[i].Width;
end;

Por supuesto, faltaría en el bucle una condición que indicara hasta donde podría crecer como máximo el ancho del grid para que no se saliera del formulario.

- Ajustar el ancho de las columnas del grid según el ancho de éste:

Código Delphi [-]
procedure AjustarGrid;
var
  I, J: Integer;
begin
  { Le restamos, primero, al ancho del grid lo que ocuparía la barra vertical y
    el indicador de filas. }
  J := (DBGrid.Width - 40) div DBGrid.Columns.Count; 
 
  for I := 0 to DBGrid.Columns.Count - 1 do
    DBGrid.Columns[i].Width := J;
end;

Lo malo de hacerlo así es que si se visualizan muchas columnas y el ancho del grid es reducido, las columnas no se visualizarán muy bien al tener poco ancho.

Chao!

Última edición por jmariano fecha: 10-08-2005 a las 21:56:15.
Responder Con Cita