使用面板自定义绘制ListBox项目

时间:2011-04-14 12:09:55

标签: delphi listbox controls custom-draw

  

可能重复:
  Delphi control that could mimic “Add-ons|Extension list” of Firefox?

我想制作一个自定义的ListBox控件。它可能看起来像Firefox下载

Firefox downloads example

但不是硬编码任何特定布局的自定义绘图,我想允许单独定义布局。 让我解释一下,列表框将有一个已发布的属性Layout:TWinControl 我们的想法是在一个说法面板中设计一个布局,所以对于上面的例子,它看起来像:

Panel with a row layout

然后在ListBox的customdraw中,它将使用panel的绘画。当然,每一行都会绘制相应项目的数据。所以控件将是DbAware,而recordIndex将针对每次抽奖进行调整。 (我没有真正使用DBAware控件,我使用自定义数据绑定,但它的原理相同)

有没有人做过这样的事情?认为这是一个好/坏的想法?

我已经开始编写测试应用,并会编辑此问题以添加具体的实施问题,

我希望所有行只使用一个面板实例,它不应该在列表框外部显示。

到目前为止,我尝试在ListBox Panel.PaintTo()中使用OnDrawItem,它基本上可以正常工作,但只有当Panel在表单的其他位置显示并且可见时。 我可以让面板隐形但仍然使用它的绘画吗? 你会如何实现这个?

0 个答案:

没有答案