Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 26 ноя 2022, 21:52

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




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: ReadStorableSettings. Не работает Visible
СообщениеДобавлено: 20 янв 2021, 10:59 
Не в сети

Зарегистрирован: 30 апр 2020, 09:14
Сообщений: 9
Добрый день! Сегодня реализовал сохранение настроек сетки в реестр. Все отлично, за исключением того, что метод DataGridEh.ReadStorableSettings не меняет Visible. Предположим, я скрываю столбец Id и сохраняю в реестр. После чтения из реестра я вижу, что в Dictionary<string, object> у столбца Id, Visible указан false. Все отлично, но когда я все это передаю в метод DataGridEh.ReadStorableSettings, видимость остается. Подскажите, как это можно исправить?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: ReadStorableSettings. Не работает Visible
СообщениеДобавлено: 21 янв 2021, 12:47 
Не в сети

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

----
Установка видимости столбца при чтении настроек выполняется в методе EhLib.WinForms.DataGridManager.ReadColumnSettings

Проверьте, останавливается ли отладчик на этом методе и присваивает ли значения свойству column.Visible.

----
В архиве библиотеки присутствует Демо проект.
Demos\DisplayLayoutStorableApp\DisplayLayoutStorableApp.csproj

В котором также сохраняется и восстанавливается видимость колонок.
Попробуйте сравнить использование метода grid.ReadStorableSettings в вашем проекте и в Демо проекте в методе DisplayLayoutStorableApp.BaseForm.ReadStorableSettings

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: ReadStorableSettings. Не работает Visible
СообщениеДобавлено: 21 янв 2021, 14:52 
Не в сети

Зарегистрирован: 30 апр 2020, 09:14
Сообщений: 9
Кажется я догадался в чем проблема. Это логическая ошибка в моем коде. При чтении из реестра я записывал в object значение (false) не как bool, а как string.
Но в моем случае решение проблемы - это писать костыли, которые я очень не люблю. Я воспользовался примером из вашего руководства разработчика и добавил вот такой код в событие:

Код:

private void Table_GridColumnSettingsReading(object sender, EhLib.WinForms.DataGridColumnStorableSettingsReadingEventArgs e)
        {
            if (e.Settings.TryGetValue("Visible", out object visible))
            {
                if (visible != null) e.Column.Visible = visible.ToBool();
            }
        }


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

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


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

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


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

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