Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2011, 23:05   #1
firephenix
Пользователь
 
Регистрация: 14.02.2011
Сообщений: 89
По умолчанию Программная смена имени колонки в DBGridEh.

В компоненте DBGridEh библиотеки Ehlib, название колонки имеет тип TColumnTitleEh, т.е. напрямую заменить его на тип String не получится.
Подскажите пожалуйста как можно это сделать.
firephenix вне форума Ответить с цитированием
Старый 08.04.2011, 23:35   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
DBGridEh.Columns[i].Title.Caption:='другое название';
Под рукой EhLib не имею, за точность не ручаюсь
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.04.2011, 23:41   #3
firephenix
Пользователь
 
Регистрация: 14.02.2011
Сообщений: 89
По умолчанию

Спасибо всё работает)))
firephenix вне форума Ответить с цитированием
Старый 17.07.2013, 13:51   #4
astecenko
Homo Interneticus
Форумчанин
 
Аватар для astecenko
 
Регистрация: 04.03.2011
Сообщений: 611
По умолчанию

Заимел проблемку при сабже :-(

Есть DbGridEh1 через DataSet1 связан с Query1. В запросе возвращаются в том числе 3 поля с данными по месяцам квартала и поле с номером квартала. В зависимости от номера квартала в шапке грида столбцы должны озаглавливаться соответствующими наименованиями месяцев, т.е. если 1 квартал то январь, февраль, март, если 3 квартал - июль, август, сентябрь и т.д.

Поставил замену заголовков (через dbgrdh1.Columns[4].Title.Caption:='название месяца') в DataSet1.OnDataChange. Когда просматриваю значение dbgrdh1.Columns[4].Title.Caption через Watches в отладчике, то вижу что все норм меняется, но в самом гриде когда перемещаюсь по записям с помощью клавиш управления курсором ничего не меняется. Когда перемещаюсь с помощью PgUp/PgDown или скроллинга мышью меняется. Пробывал после изменения заголовка делать refresh, paint, application.processmessage, добавлял предварительно delay(1). Толку нуль :-(

Куды смотреть?

ЗЫ: EhLib 5.2.05, может какой-то баг в DBGridEh был в этой версии? Если у кого-нидь есть History/Changelog более новой версии можете посмотреть?

Последний раз редактировалось astecenko; 17.07.2013 в 14:27.
astecenko вне форума Ответить с цитированием
Старый 17.07.2013, 14:56   #5
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Смотреть, видно, надо на событие квери AfterScroll, которое возникает при любом позиционирование в гриде.
В процедуре обработки этого события, скорее всего, и надо менять заголовки в зависимости от номера квартала в текущей строке.
(если вопрос правильно понят)
Прик вне форума Ответить с цитированием
Старый 17.07.2013, 15:10   #6
astecenko
Homo Interneticus
Форумчанин
 
Аватар для astecenko
 
Регистрация: 04.03.2011
Сообщений: 611
По умолчанию

Ставил в AfterScroll - не помогает
Суть в том тчо при просмотре в отладчике вижу что фактически инфа в dbgrdh1.Columns[n].Title.Caption меняется, НО сама шапка DBGridEh1 почему-то не перерисовывается если я перемещаюсь по записям с помощью клавиш управления курсором. Если перемещаюсь по записям с помощью Pg(Up|Down) или скроллинга мышья - перерисовывается. Т.е. дело по всей видимости именно в DbGridEh :-(
astecenko вне форума Ответить с цитированием
Старый 17.07.2013, 15:40   #7
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Цитата:
Ставил в AfterScroll...
Смотря что ставил.
А DBGridEh в этой ситуации мало чем отличается от штатной DBGrid и вряд ли дело в этом компоненте.
Прик вне форума Ответить с цитированием
Старый 17.07.2013, 15:57   #8
astecenko
Homo Interneticus
Форумчанин
 
Аватар для astecenko
 
Регистрация: 04.03.2011
Сообщений: 611
По умолчанию

не-не, как раз с 5ой версии по-моему у DBGridEh своя прорисовка и т.п., он же не наследует от DBGrid штатное... там какие-то методы остались заглушками для совместимости, а какие-т оновые появились. Но суть в том что я в прорисовку конкретно шапки таблицы ни где не лезу. То бишь у меня есть обработчик dbgrdh1GetCellParams где я только меняю цвет фона строк

в AfterScroll ставил присвоение имен столбцам, то что до того стояло в dataset1.ondatachange - результат аналогичен...

Причем забавно, вот сейчас начал проверять, несколько раз сработало когда переходил с помошью клавиш управления курсором по записям, потом опять перестало :-(
astecenko вне форума Ответить с цитированием
Старый 17.07.2013, 16:23   #9
astecenko
Homo Interneticus
Форумчанин
 
Аватар для astecenko
 
Регистрация: 04.03.2011
Сообщений: 611
По умолчанию

Короче пока поставил "костыль": чтобы принудительно перерисовать грида после изменения шапки делаю dbgrideh1.width:=dbgrideh1.width+1 - так как у меня dbgrideh1.Align=alClient реально никаких изменений ширины не происходит, оно и так на всю панель, но грид перерисовывается...

подозреваю все же баг в мое версии EhLib :-(
astecenko вне форума Ответить с цитированием
Старый 17.07.2013, 16:41   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Спокойно с помощью AfterScroll меняю. Только версия EhLib у меня древняя - 2.5
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как присвоить Максимальную длину колонки DBGridEh Если даные берутся из квери postaveche БД в Delphi 10 13.09.2010 14:54
Смена имени ПК в Linux. Bilargo Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 36 22.01.2010 00:17
Программная смена иконки на кнопке, расположенной на Панели быстрого доступа, в Word 2007 litvin44 Microsoft Office Word 4 01.11.2009 14:58
Как в dbgrideh получить имя поля той колонки, по заголовку которой Вы щелкнули???? zimmion БД в Delphi 4 04.03.2008 15:02
Смена имени Terran Win Api 2 14.12.2007 17:19