我正在重新学习Delphi,因为多年来没有编程任何东西,并且忘记了比我学到的更多的东西!我从简单的文件搜索例程开始,然后将找到的文件放在多列列表框中。我发现的组件在Delphi3000.com上称为MultiColListBox.pas。我在排序例程中添加了几个事件,并修复了启用排序时的空列表框错误。

当使用此代码定义了两列且每列的长度设置为20,并且在第一列中,文本(项目)的长度为100个字符,第二列中的第一项的长度为20个字符,您将看到foirst列文本中的尾随空白文本下方。

在组件(在下面链接到代码)中,绘制了列;

procedure TMultiColListBox.ListBoxDrawItem(Control : TWinControl;
                                       Index : Integer;
                                       Rect : TRect;
                                       State : TOwnerDrawState);


我尝试将画笔设置为固体,以及其他我能想到的。我终于意识到,它正在绘制文本的坐标,没有任何拖尾。因此,我们得到了不希望的透明效果。

到目前为止,通常我会忽略一些简单的东西(看不见树木的森林)。什么可以解决此问题? (此组件有很多项目无法正常工作,但有很多的学习经验。

链接至代码:http://www.delphi3000.com/articles/article_3360.asp
MultiColListBox

谢谢!

约翰

PS。我无法弄清楚如何格式化片段,然后将长代码集甚至整个功能粘贴到该论坛(如上所述的短代码),因此我在Delphi3000.com上提供了指向组件代码的链接。

最佳答案

与其争用这个已有10年历史的代码,您只需切换到列表视图TListView并将ViewStyle设置为vsReport。这使用本地的现代Windows列表控件为您提供了多列列表。

这并不能直接回答您的问题,但是我认为它比您尝试使用的代码更好地解决了您的问题。

10-08 05:21