Util para guardar las preferencias del usuario de tu programa cuando cambia de tamaño las columnas de un DBGrid y no quieres que se pierdan esos valores al salir de tu aplicación.
Los valores serán grabados en el Registro de Windows.
Basta con usar estas dos funciones:
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;
|
a las que sólo has de pasarle como parámetro el nombre del DBGrid que quieres grabar/cargar.
Primero, añade Registry en el uses de tu form
Luego, declara las dos funciones en tu form, en la parte private, por ejemplo:
private
{ Private declarations }
Procedure SaveColPos(Const DbGrid:TDBgrid);
Procedure LoadColPos(Var DbGrid:TDBgrid);
|
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;
|
Como ultimo consejo, podrías cambiar las lineas:
Registro.OpenKey('\Software\NombreDelPrograma\Grids',False);
|
por éstas otras:
Registro.OpenKey( '\Software\'+
ExtractFileName(Application.Exename)+
'\Grids',
TRUE
);
|
Ojo, en las dos funciones.
y Así te despreocuparás de cambiar la cadena 'NombreDelPrograma' en cada aplicación que uses las funciones.
|