Пользовательское рисование элементов ListBox с панелью
Возможный дубликат:
Элемент управления Delphi, который может имитировать "Дополнения | Список расширений" Firefox?
Я хотел бы сделать собственный элемент управления ListBox. Это может выглядеть как загрузка Firefox
но вместо того, чтобы жестко кодировать пользовательский рисунок для любого конкретного макета, я бы хотел, чтобы макет определялся отдельно. Позвольте мне объяснить, список будет иметь опубликованное свойство Layout: TWinControl. Идея состоит в том, чтобы создать макет в скажем панели, поэтому для приведенного выше примера это будет выглядеть примерно так:
Тогда в customdraw ListBox он будет использовать рисование панели. Конечно, каждая строка будет рисовать данные для соответствующего элемента. Таким образом, элементы управления будут DbAware и recordIndex будет корректироваться для каждого розыгрыша. (Я не использую элементы управления DBAware, я использую пользовательские привязки данных, но это тот же принцип)
Кто-нибудь уже сделал что-то подобное? Думаешь, это хорошая / плохая идея?
Я начал писать тестовое приложение и отредактирую этот вопрос, чтобы добавить конкретные вопросы реализации,
Я надеюсь использовать только 1 экземпляр панели для всех строк, он не должен быть виден отдельно от списка.
До сих пор я пытался использовать Panel.PaintTo()
в ListBox OnDrawItem
, это в основном работает, но только если Panel является родительской и видимой в другом месте формы. Могу ли я сделать панель невидимой, но все же использовать ее рисование? Как бы вы пошли на реализацию этого?