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