Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 27 апр 2024, 20:14

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: 20 дек 2021, 09:05 
Не в сети

Зарегистрирован: 26 окт 2021, 16:37
Сообщений: 15
Добрый день.

Обнаружилось, что DBGridEh считает FrozenCols по общему количеству колонок, а не только по видимым.
Т.е. если положить на форму DBGridEh, на нем разместить 4 (или больше) колонки, первую сделать невидимой, а на гриде установить FrozenCols = 2, то «замороженной» будет только одна колонка, а если две первые колонки будут скрыты, то закрепленных столбцов не будет.

Возможно ли сделать флаг, в котором указывать как считать FrozenCols (по всем или только по видимым)?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 21 дек 2021, 08:10 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1549
Добрый день.

По логике количество замороженных колонок действительно должно складываться на основе видимых колонок.
Но вводить специальное свойство наверно смысла нет. Тут логика должна быть однозначна.
Изменение расчета замороженных колонок добавим в следующей версии.
Для сборки это приведет к несовместимости с предыдущими сборками.

В текущей версии вы можете использовать новый алгоритм если измените код вручную в методе: 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;
...

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 24 фев 2022, 07:00 
Не в сети

Зарегистрирован: 26 окт 2021, 16:37
Сообщений: 15
День добрый.
В последних версиях EhLib указанный вариант исправления так и не появился.

Файл \EhLib\EhLib.VCL 10.1 Build 10.1.029\ehlib_vcl_src_10_1\Common\DBGridEh.pas
также не содержит предложенного варианта.

Подскажите - ждать ли здесь исправления?
Или будет предложен иной механизм?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 24 фев 2022, 17:58 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1549
Добрый день.

Новая версия будет иметь номер 10.2
В релиз она еще не вышла.

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB