Components for Delphi and C++ Builder.

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

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




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
СообщениеДобавлено: 25 апр 2020, 22:13 
Не в сети

Зарегистрирован: 17 окт 2016, 13:19
Сообщений: 50
Откуда: Россия, Москва
Здравствуйте, уважаемые разработчики.

Delphi XE5, EhLib.VCL 9.5 Build 9.5.013

Заметил такую штуку....
На одной форме имеется TDGBridEh и TDBVertGridEh подключенные к одному TDataSource, а етот TDataSource подключен к TMemTableEh.
Настройки колонок TDGBridEh хранятся в файле, при старте загружаются через
Код:
DBGridEh1.Columns.LoadFromFile(...)
Все нормально
Далее названия колонок для TDBVertGridEh берутся из колонок TDGBridEh по индексу - тоже все нормально:
Код:
DBVertGridEh1.Rows.Items[0].RowLabel.Caption  :=  DBGridEh1.Columns[0].Title.Caption

Если не сохранять настройки TDGBridEh методом
Код:
DBGridEh1.Columns.SaveToFile(...)

то при старте и загрузке настроек TDGBridEh из файла все хорошо, но...
если сохранить настройки (кнопка Сохранить), указанным выше методом, то при старте в заголовках колонок показываются имена полей или названия типов полей....
[img]dbg2.jpg[/img]
[img]dbg1.jpg[/img]

для теста восстановить названия полей можно нажав на кнопку - "Загрузить", там просто загружаются настройки из резервного файла.
Что за чудеса, может я что делаю не так... при отсутствие вертикально грида, подключенного к тому же TDataSource, что и TDGBridEh - проблем не возникает.
Проект прилагаю.


Вложения:
TestDBGridEhLoadColumn.rar [70.42 KiB]
Скачиваний: 66
dbg1.jpg
dbg1.jpg [ 28.17 KiB | Просмотров: 1111 ]
dbg2.jpg
dbg2.jpg [ 30.41 KiB | Просмотров: 1111 ]
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 01 май 2020, 17:25 
Не в сети

Зарегистрирован: 17 окт 2016, 13:19
Сообщений: 50
Откуда: Россия, Москва
Всех с большими выходными!
Здоровья, отличного настроения, оптимизма и успехов!

Товарищи разработчики, что можете по данному вопросу (потеря настроек) сказать, или таки указать ))) ?

Заранее благодарен


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 01 май 2020, 17:49 
Не в сети

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

Не очень понятно в чем ошибка.

При запуске вашей программы Всегда отображаются английские названия.
При нажатии "Загрузить", в первом гриде Всегда отображаются русские названия.
В файле savecol_reserve.set действительно заголовки прописаны по русски.
Никаких " или " не возникает.

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 01 май 2020, 23:29 
Не в сети

Зарегистрирован: 17 окт 2016, 13:19
Сообщений: 50
Откуда: Россия, Москва
EhLibSupport писал(а):
Добрый день.

Не очень понятно в чем ошибка.

При запуске вашей программы Всегда отображаются английские названия.
При нажатии "Загрузить", в первом гриде Всегда отображаются русские названия.
В файле savecol_reserve.set действительно заголовки прописаны по русски.
Никаких " или " не возникает.


Здравствуйте.
Непонятка вот в чем:
Рядом с кнопками, справа, есть два TEdit-а, изменяя в них текст, мы меняем названия в заголовках первого грида - TDBGridEh.
После этого нажимаем кнопку Сохранить. Настройки записываюся в файл savecol.set. Из него при старте загружаются настройки для TDBGridEh.
Закрываем программу. Открываем. Первый грид отображает, то что мы изменили и сохранили. Все нормально.
Далее нажимаем опять кнопку Сохранить (сохраняем опять в savecol.set).
Закрываем программу. Открываем - нет настроек.... слетели.

При отсутствие вертикального грида такого не происходит.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 02 май 2020, 10:58 
Не в сети

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

Вы заранее не создаете колонки,
т.е. колонки создаются динамически на основе полей ДатаСета.

При этом через функции SaveToFile, LoadFromFile вы пытаетесь с ними работать как со статическими.

Создавайте колонки заранее в ДизаинТайм или через DBGridEh1.Columns.RebuildColumns;

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  //  создаем поля
  MemTableEh1.FieldDefs.Add('FieldInteger', ftInteger);
  MemTableEh1.FieldDefs.Add('FieldFloat',   ftFloat);
  MemTableEh1.CreateDataSet;  //  создаем таблицу

  //  записываем путь к ехе-файлу
  AppPath :=  ExtractFilePath(Application.ExeName);

  DBGridEh1.Columns.RebuildColumns;
  DBVertGridEh1.Rows.RebuildBars;
end;

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 02 май 2020, 12:39 
Не в сети

Зарегистрирован: 17 окт 2016, 13:19
Сообщений: 50
Откуда: Россия, Москва
EhLibSupport писал(а):
Добрый день.

Вы заранее не создаете колонки,
т.е. колонки создаются динамически на основе полей ДатаСета.

При этом через функции SaveToFile, LoadFromFile вы пытаетесь с ними работать как со статическими.

Создавайте колонки заранее в ДизаинТайм или через DBGridEh1.Columns.RebuildColumns;



Добрый день.
Никогда не создаю колонки design-time и во всех рабочих проектах именно так и загружаю и сохраняю настройки - через SaveToFile и LoadFromFile,
еще с версии 9,0.
У меня есть форма настроек сетки, в RunTime я при необходимости изменяю названия полей, делаю многострочные заголовки, задаю цвет, формат и т.п. и сохраняю
Проблем не возникает, очень удобно.
Проблема возникла, когда рядом с TDBGridEh находится TDBVertGridEh и вертикальному гриду присваиваются вот таким способом названия из обычного грида .
Попробуйте в моем примере закоментарить только эти строки в FormShow: (присвоение названий колонок вертикальному гриду)
Код:
DBVertGridEh1.Rows.Items[0].RowLabel.Caption  :=  DBGridEh1.Columns[0].Title.Caption;
DBVertGridEh1.Rows.Items[1].RowLabel.Caption  :=  DBGridEh1.Columns[1].Title.Caption;

и проблема с сохранением и загрузкой исчезнет, но это не решение проблемы - это костыль...

Я случайно на это наткнулся. Посмотрел свой проект от 2017 года, там использовал
Код:
DBVertGridEh1.Rows.Items[1].RowLabel.Caption  :=   

и проблем не было.

А теперь как это (присвоение названий колонок вертикальному гриду таким способом) связано с сохранением настроек для обычного грида?

Заранее благодарен.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 02 май 2020, 16:07 
Не в сети

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

Проверьте, пожалуйста ваши настройки электронной почты.
Система отправки сообщений на форуме по вашему адресу выдает ошибку -
said: 554 5.1.1 Unknown user;
9PnPokj70B-B5QpEvrx (in reply to end of DATA command

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 02 май 2020, 16:20 
Не в сети

Зарегистрирован: 17 окт 2016, 13:19
Сообщений: 50
Откуда: Россия, Москва
Здравствуйте.

Почту поправил, стоял старый адрес. Можно пробовать ))


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 09 май 2020, 15:23 
Не в сети

Зарегистрирован: 17 окт 2016, 13:19
Сообщений: 50
Откуда: Россия, Москва
Всех с праздником Победы!!!


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 май 2020, 11:24 
Не в сети

Зарегистрирован: 17 окт 2016, 13:19
Сообщений: 50
Откуда: Россия, Москва
День добрый.
Проблема решилась использованием предложенным вами кодом для DBVertGridEh1:
и после этого присвоением названий полей из обычного грида
Код:
DBVertGridEh1.Rows.RebuildBars;
DBVertGridEh1.Rows.Items[0].RowLabel.Caption  :=  DBGridEh1.Columns[0].Title.Caption;

После этого настройка колонок DBGridEh1 не слетает при загрузке:
Код:
сохранение
DBGridEh1.Columns.SaveToFile("путь к файлу настроек")

восстановление
DBGridEh1.Columns.LoadFromFile("путь к файлу настроек")

Спасибо.

Еще вопрос: CheckBox в поле (в DBGridEh и DBVertGridEh) всегда выровнен по центру - можно ли задать ему выравнивание по левому/правому краю какими-то настройками или надо код писать?
Обычное выравнивание не помогает...
Код:
DBVertGridEh1.Rows.Items[i].Alignment := taRightJustify
или
DBVertGridEh1.Rows.Items[i].Alignment := taLeftJustify

Заранее благодарен.


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

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


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

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


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

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