Ver Mensaje Individual
  #3  
Antiguo 17-03-2007
CrazySoft CrazySoft is offline
Miembro
 
Registrado: abr 2005
Posts: 96
Reputación: 20
CrazySoft Va por buen camino
Prueba con esto

Código Delphi [-]
 
procedure TForm1.SaveColPos(Const DbGrid:TDBgrid);
var 
  Registro :TRegistry;
  F        :Byte;
begin 
  Registro:=TRegistry.Create;
  Registro.OpenKey('\Software\NombreDelPrograma\Grids',True);
  for F:=0 to DbGrid.Columns.Count-1 do 
    Registro.WriteInteger(DbGrid.Name+'['+IntToStr(F)+']',DbGrid.Columns[F].Width);
  Registro.Free;
end; 
 
procedure TForm1.LoadColPos(Var DbGrid:TDBgrid);
var 
  Registro :TRegistry;
  F        :Byte;
begin 
  Registro:=TRegistry.Create;
  Registro.OpenKey('\Software\NombreDelPrograma\Grids',False);
  if Registro.ValueExists(DbGrid.Name+'[0]') then 
    for F:=0 to DbGrid.Columns.Count-1 do 
      DbGrid.Columns[F].Width:=Registro.ReadInteger(DbGrid.Name+'['+IntToStr(F)+']');
  Registro.Free;
end; 
//**********
-Y ahora, utiliza el evento OnCreate de la form para cargar el ancho de las columnas:

 procedure TForm1.FormCreate(Sender: TObject);
begin 
  LoadColPos(DBGrid1);
end; 
 
 
 
-Y para grabar las columnas antes de salir de tu aplicacion, usa el evento OnDestroy de la Form:
 
 
 
procedure TForm1.FormDestroy(Sender: TObject);
begin 
  SaveColPos(DBGrid1);
end;
Responder Con Cita