gpt4 book ai didi

delphi - Canvas.TextOut 似乎允许透明的尾随空白

转载 作者:行者123 更新时间:2023-12-03 19:19:32 30 4
gpt4 key购买 nike

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

当使用此代码定义两列并且每列的长度设置为 20 时,在第一列中,您的文本(项目)长度为 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 上提供了组件代码的链接。

最佳答案

而不是与这个有 10 年历史的代码作斗争,你应该简单地切换到 ListView , TListView 并设置 ViewStyle vsReport .这为您提供了一个使用 native 现代 Windows 列表控件的多列列表。

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

关于delphi - Canvas.TextOut 似乎允许透明的尾随空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8053042/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com