Пользовательские элементы ListBox для рисования с панелью

Возможный дубликат:
Управление Delphi, которое может имитировать список дополнений|расширений Firefox?

Я хотел бы создать собственный элемент управления ListBox. Это может выглядеть как загрузки Firefox

Пример загрузки Firefox

но вместо того, чтобы жестко кодировать пользовательский рисунок для любого конкретного макета, я хотел бы разрешить определение макета отдельно. Позвольте мне объяснить, список будет иметь опубликованное свойство Макет: TWinControl Идея состоит в том, чтобы разработать макет в панели say, поэтому для приведенного выше примера это будет выглядеть примерно так:

Панель с расположением строк

Затем в customdraw ListBox будет использоваться рисование панели. Конечно, каждая строка будет отображать данные для соответствующего элемента. Таким образом, элементы управления будут DbAware, а recordIndex будет корректироваться для каждого розыгрыша. (На самом деле я не использую элементы управления DBAware, я использую пользовательские привязки данных, но это тот же принцип)

Кто-нибудь уже делал что-то подобное? Думаете, это хорошая/плохая идея?

Я начал писать тестовое приложение и отредактирую этот вопрос, чтобы добавить конкретные вопросы реализации,

Я надеюсь использовать только 1 экземпляр панели для всех строк, он не должен быть виден сам по себе за пределами списка.

До сих пор я пытался использовать Panel.PaintTo() в ListBox OnDrawItem, это в основном работает, но только если Panel является родительской и видна в другом месте формы. Могу ли я сделать панель невидимой, но при этом использовать ее для рисования? Как бы вы это реализовали?


person Daniel Maurić    schedule 14.04.2011    source источник
comment
Вы пытаетесь заново изобрести DbCtrlGrid?   -  person Cosmin Prund    schedule 14.04.2011
comment
Это аналогичный вопрос, который мы обсуждали здесь. Смотрите изображения. С Уважением.   -  person Germán Estévez -Neftalí-    schedule 14.04.2011
comment
Ах да DbCtrlGrid, вот почему у меня было дежавю.   -  person Daniel Maurić    schedule 14.04.2011
comment
@Cosmin +1 это не что иное, как DbCtrlGrid   -  person Najem    schedule 14.04.2011
comment
@RRUZ ответ здесь будет использовать DbCtrlGrid, а для надстроек - TCategoryButtons.   -  person Najem    schedule 14.04.2011