Добрый день.
По логике количество замороженных колонок действительно должно складываться на основе видимых колонок.
Но вводить специальное свойство наверно смысла нет. Тут логика должна быть однозначна.
Изменение расчета замороженных колонок добавим в следующей версии.
Для сборки это приведет к несовместимости с предыдущими сборками.
В текущей версии вы можете использовать новый алгоритм если измените код вручную в методе: TCustomDBGridEh.InternalLayout;
Код:
procedure TCustomDBGridEh.InternalLayout;
var
...
AFrozenCols: Integer;
AVisFrozenCols: Integer;
...
begin
...
if not DataLink.Active and (Columns.State = csDefault) then
begin
AFrozenCols := 0;
AContraColCount := 0;
end else
begin
AFrozenCols := 0;
if (FrozenCols > 0) then
begin
AVisFrozenCols := 0;
for I := 0 to Columns.Count - 1 do
begin
AFrozenCols := AFrozenCols + 1;
if (Columns[I].Visible = True) then
begin
AVisFrozenCols := AVisFrozenCols + 1;
if AVisFrozenCols >= FrozenCols then
Break;
end;
end;
end;
if AFrozenCols >= Columns.Count then
AFrozenCols := Columns.Count - 1;
// if FrozenCols >= Columns.Count
// then AFrozenCols := Columns.Count - 1
// else AFrozenCols := FrozenCols;
if ContraColCount >= Columns.Count - AFrozenCols
then AContraColCount := Columns.Count - AFrozenCols - 1
else AContraColCount := ContraColCount;
end;
...