Frequently Asked Component Specific Questions

Options

Display all FAQ items

Search FAQ items:


Displaying items 1 to 1 of 1, page 1 of 1

<< previous next >>

TDBAdvGrid
Persisting column sizes & column order for a TDBAdvGrid

Assuming a user can resize & move columns around in a TDBAdvGrid and it is desirable that the last state is saved & restored when the application is restarted, this can be done in following way:
  1. Set default column order & size state after making the dataset active in the TDBAdvGrid with grid.SetColumnOrder
  2. When column states are found, restore these from INI file with grid.StringToColumnStates
  3. When the application closes, save the last state to INI file with grid.ColumnStatesToString
The full code becomes:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
  inif: TINIFile;
begin
  inif := TINIFile.Create('.\settings.ini');
  inif.WriteString('STATES','DBADVGRID1',DBAdvGrid1.ColumnStatesToString);
  inif.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  inif: TINIFile;
  colstates: string;
begin
  adotable1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\CARS.mdb;Persist Security Info=False';
  adotable1.Active := true;
  DBAdvGrid1.SetColumnOrder;
  DBAdvGrid1.Options := DBAdvGrid1.Options + [goColSizing, goColMoving];

  inif := TINIFile.Create('.\settings.ini');
  colstates := inif.ReadString('STATES','DBADVGRID1','');
  inif.Free;

  if colstates <> '' then
    DBAdvGrid1.StringToColumnStates(colstates);
end;