我想做一个自定义 ListBox 控件。它可能看起来像 Firefox 下载
但我不想为任何特定布局硬编码自定义绘图,而是允许单独定义布局。让我解释一下,列表框将有一个已发布的属性 Layout: TWinControl 这个想法是在说面板中设计一个布局,因此对于上面的示例,它看起来像:
然后在 ListBox 的 customdraw 中,它将使用面板的绘画。当然,每一行都会绘制相应项目的数据。因此控件将是 DbAware 并且 recordIndex 将针对每次抽奖进行调整。(我不是真的用DBAware控件,我用的是自定义数据绑定,不过原理是一样的)
有没有人已经做过这样的事情?认为这是一个好/坏主意?
我已经开始编写一个测试应用程序并将编辑这个问题以添加具体的实施问题,
我希望对所有行只使用 1 个面板实例,它不应该在列表框之外自己看到。
到目前为止,我尝试Panel.PaintTo()
在 ListBox 中使用OnDrawItem
,它基本上可以工作,但前提是 Panel 是父级并且在表单的其他地方可见。我可以让面板不可见但仍然使用它的绘画吗?您将如何实施?