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;