Проверял как Delphi 7 работает с одной базой данных, и обнаружил, что стандартный TDbGrid умеет рисовать многострочные заголовки с группированием. Сказать что я удивился, это то же самое, что не сказать ничего. За годы программирования в Делфи мне казалось, что про этот компонент я знаю всё, и вдруг такой сюрприз.
Мне стало интересно, знает ли кто из читателей о таких возможностях DbGrid-a, а может даже использует их?
На картинках можно увидеть как это выглядит. На первой картинке групповая колонка в развёрнутом виде. На второй тот же грид, но в свёрнутом виде.
Программа написана использует только стандартные компоненты входящие в состав Delphi 7(в Delphi 6 они тоже есть, но там я не проверял). Никакой отрисовки вручную. Никакого дополнительного кода(обработчиков событий).
Вопрос
Знаете ли вы о такой фиче стандартного TDbGrid?p.s. также интересно было бы услышать догадки о том, как это сделано. ;-)

15 человек заметили этот пост:
АААААаааа......
Ты взорвал мне мозг.
Я даже и не подазревал об этом и нигде де читал про это за все годы программирования
оффтоп: Что там с Лейзибилдером ?
Я тоже на эту тему не нашёл информации, пока не столкнулся сам. =)
В исходниках VCL есть масса интересных вещей. =)
Про Лейзибилдер напишу отдельным постом чуть позже.
Если честно - первый раз о таком слышу - великолепное открытие! Насколько я понимаю, это сделано через свойство Expanded класса TColumn?
Последнее время вообще DBGrid не использовал - все засовывал в VirtualListView, но теперь появился повод пересмотреть некоторые свои убеждения. Спасибо!
2 Валерий:
Это свойство - read-only, но через него легко прийти к ответу на вопрос "как?" =)))
Я просто не стал полностью секрет раскрывать :))
Может опишете поподробнее как сделать?
А то я только начал работу с БД
Но если только начал, то лучше, на мой взгляд, использовать нестандартный DbGrid, например, Ehlib. Там многострочный заголовок реализовать намного проще. Дело в том, что в стандартном DbGrid-е эта штука сделана достаточно неудобно.
Я обязательно опишу, но скорее всего, не раньше февраля.
Ну как? Как?! КАК?! КАК ЖЕ ЭТО ДЕЛАЕТСЯ?!
Ох тыж ёпрст...
это сделано средствами адо. зы он еще мастер/детейл дерево рисовать умеет безо всяких обработчиков. если поставщик данных позволяет.
> это сделано средствами адо
это сделано средствами TDbGrid, и проявляется при работе с наследницами TObjectField. Подробнее, с примером - по ссылке.
Анонимный, master-detail и дерево, звучит невероятно. А можно узнать, как такое сделать?
Афффигеть, даже не думал. В сове време делал общие заголовки через перехватывания OnPaint но это было намного менее красиво
Алексей, как с вами можно лично связаться? Хотел бы пообщаться на тему DBGrid'ов и сопутствующего..
Алексей, если не сложно, напишите на poz.nickolay(at)gmail.com
Контакная ифнормация опопубликована тут.
Отправить комментарий