Canvas.TextOut似乎允许透明的尾随空格

时间:2011-11-08 15:42:04

标签: delphi

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

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

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

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

我已经尝试将画笔设置为实心,以及我能想到的其他所有内容。我终于意识到它正在绘制文本的坐标,没有任何尾随。因此,我们得到的透明效果是不可取的。

通常我忽略了一些简单的东西,到目前为止,(看不到森林里的树木)。什么可以解决这个问题? (这个组件有许多项目不起作用,因此工作量大,但重新学习经验很好。

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

谢谢!

约翰

PS。我无法弄清楚如何格式化剪切,然后将长代码集或甚至整个函数粘贴到此论坛,(简短的,如上所述),所以我提供了Delphi3000.com上的compoenent代码的链接。

1 个答案:

答案 0 :(得分:5)

您应该只需切换到列表视图,TListView并将ViewStyle设置为vsReport,而不是与这个10岁的代码作斗争。这为您提供了使用本机现代Windows列表控件的多列列表。

这并不直接回答您的问题,但我相信它可以比您尝试使用的代码更好地解决您的问题。