TMS AdvColumnGrid trouble after upgrade

Our software has been using TMS Grids for several years, but a recent upgrade in your components has broken our code.

A TAdvColumnGrid on one of our forms saves Column Sizes and Column Positions by user, using the ColumnSize property of the grid (and its subproperties of Location, Section, and Key).  To save settings after a drag-and-drop column position change, we have always called gridName.SaveColPositions.  I can see that this used to go through a function in AdvGrid (the parent class) that looks like:

// start TMS Delphi source code snippet *************************************************************
procedure TAdvStringGrid.SaveColPositions;
var
  i: Integer;
  IniFile: TCustomIniFile;

begin
  if (FColumnSize.Key <> '') and
     (FColumnSize.Section <> '') and
     (not (csDesigning in ComponentState)) then
  begin
    if FColumnSize.Location = clRegistry then
      IniFile := TRegistryIniFile.Create(FColumnSize.Key)
    else
      IniFile := TMemIniFile.Create(FColumnSize.Key);

    for i := 1 to FColumnOrder.Count do
      IniFile.WriteInteger(FColumnSize.section,'Pos'+inttostr(i-1),FColumnOrder.Items[i - 1]);

    IniFile.UpdateFile;
    IniFile.Free;
  end;
end;
// end TMS Delphi source code snippet ************************************************************

After the TMS Component Pack upgrade, applied in the last week, the call to SaveColPositions is going through a new function (also named SaveColPositions) in AdvCGrid, which then calls another long-standing function in that unit called SaveColumnPositions.  These functions are copied below for reference:

// start TMS Delphi source code snippet ***********************************************************
procedure TAdvColumnGrid.SaveColPositions;
begin
  SaveColumnPositions(ColumnSize.Key, ColumnSize.Section);
end;

procedure TAdvColumnGrid.SaveColumnPositions(Key, Section: string);
var
  IniFile: TIniFile;
  i: Integer;
begin
  IniFile := TIniFile.Create(Key);

  for i := 1 to Columns.Count do
  begin
    IniFile.WriteInteger(Section,'CP'+IntToStr(i - 1),Columns[i - 1].DefIdx);
  end;
  IniFile.Free;
end;
// end TMS Delphi source code snippet ************************************************************

The new method does not consider ColumnSize.Location at all, and always assumes that we want to store column positions in a text INI file, whose path is specified by Key.

Since our software has always saved this information in the registry, the path in Key is not a valid directory path, but instead it is a sub-path from HKEY_CURRENT_USER. 

The other obvious problem we have is that we always stored column Positions with the "Pos#" form when using the AdvGrid function (prior to the update), but the new method is using "CP#" as the value name.

So, my questions are:

1) If we switch to using an INI text file (which we could), how do
different users store their personal settings for column arrangements?  Would that INI file need to be in the users' personal "My Documents" folder for this to work (assuming I could reference that folder using a relative path)?  Using the "old" method, the registry always was a relative path from HKEY_CURRENT_USER, therefore different users could easily have different setups for column positions.

2) Why was the change made away from using the registry to store settings for TAdvColumnGrid, while ColumnSize.Location property still has an option for clRegistry type of storage?  Shouldn't the new function also take this setting into account?

3) I understand that the TAdvColumnGrid function SaveColumnPositions always used a "CP" prefix, but why is that not consistent with the TAdvStringGrid "Pos" prefix on data value names for holding column position data?

Let me know if you have any questions about my explanation of the issue.

John Forsythe
john.forsythe@nisc.coop

We have added back the capability to save/load from the registry from TAdvColumnGrid. 
This fix will be available in the next update.

Confirmed fixed in TMS Component Pack v6.3.0.0.

Thanks!