Delphi TListBox内容在选择时溢出(Win7,32位,主题化)

Delphi TListBox内容在选择时溢出(Win7,32位,主题化),delphi,listbox,paint,Delphi,Listbox,Paint,我在Windows窗体上有一个包含966个元素的TListBox。当我单击表单上的按钮时,将选择这些字符串的子集(大约200个) 如果现在通过单击任务栏上的某个位置来解除应用程序的焦点,则TListBox中的条目会向上流血,以便它们在TListBox的边界上方可见。谢天谢地,它们在它们正上方的TGroupBox组件后面流血了——不过这看起来仍然非常粗糙 我只能在一台使用Aero主题的Win 7 x64机器上复制这一点(我有另一台Win 7 x64笔记本电脑,它在相同的主题设置下不会出现相同的问题

我在Windows窗体上有一个包含966个元素的TListBox。当我单击表单上的按钮时,将选择这些字符串的子集(大约200个)

如果现在通过单击任务栏上的某个位置来解除应用程序的焦点,则TListBox中的条目会向上流血,以便它们在TListBox的边界上方可见。谢天谢地,它们在它们正上方的TGroupBox组件后面流血了——不过这看起来仍然非常粗糙

我只能在一台使用Aero主题的Win 7 x64机器上复制这一点(我有另一台Win 7 x64笔记本电脑,它在相同的主题设置下不会出现相同的问题)

我尝试在更改select状态后直接发出PostMessage(Self.Handle,WM_PAINT,0,0),前面是ListBox.Refresh。这没用

任何帮助都将不胜感激。如果您需要更多详细信息,请告知


干杯,邓肯你是在使用XPManifest单元,还是为你的应用程序启用了主题?如果是这样的话,试着不要用它来看看会发生什么。如果你没有一张好的显卡,那会很糟糕


我的2美分?避免使用主题。“简单”并不能很好地工作。

您是在使用XPManifest单元,还是为应用程序启用了主题?如果是这样的话,试着不要用它来看看会发生什么。如果你没有一张好的显卡,那会很糟糕


我的2美分?避免使用主题。“简单”功能不太好。

我无法在64位Windows 7 Delphi 2009上重现该问题。您确定这与大量列表项有关吗?设法缩小问题的范围。另外:什么是
t选择框
?我想你指的是一个
TListBox
@Andreas-是的,对不起,我指的是TListBox。我也无法在任何其他计算机上复制这个。我测试过的其他计算机都有Aero,但都有离散的图形适配器(问题计算机使用的是Intel集成适配器)。然后,我要尝试的第一步是更新图形驱动程序……Windows会将它能做的一切委托给视频驱动程序,因此具有不同驱动程序的机器可能会产生不同的结果。您是否尝试过安全模式(MS自己的驱动程序),或者在禁用视频加速时?如果您没有执行bizarro ownerdraw代码,则我怀疑是视频驱动程序。我无法在Windows 7 64位Delphi 2009上重现此问题。您确定这与大量列表项有关吗?设法缩小问题的范围。另外:什么是
t选择框
?我想你指的是一个
TListBox
@Andreas-是的,对不起,我指的是TListBox。我也无法在任何其他计算机上复制这个。我测试过的其他计算机都有Aero,但都有离散的图形适配器(问题计算机使用的是Intel集成适配器)。然后,我要尝试的第一步是更新图形驱动程序……Windows会将它能做的一切委托给视频驱动程序,因此具有不同驱动程序的机器可能会产生不同的结果。你是否尝试过安全模式(微软自己的驱动程序),或者在禁用视频加速时?如果你没有使用bizarro ownerdraw代码,那么我怀疑是视频驱动程序。-1不使用主题不是你的选择。它是您的应用程序正在其计算机上运行的人。其次,OP已经说过Aero正在使用中,并且Aero在另一台机器上进行了测试,但没有显示问题。@Ken White我不同意你的看法。我选择不使用主题,因为我是应用程序开发人员,我知道什么可行,什么不可行。在我的情况下,我喜欢使用DevExpress皮肤库,避免使用有缺陷的delphi主题单元。正如我之前所说的(我可以看出你没有读过),如果你没有一张好的视频卡,主题可能会很糟糕。他试过另一台电脑,是的,但它有相同的显卡?这是同一台计算机?@Ken White,我说“完全避免使用主题”的意思是“根本不使用Delphi的主题单元”。你可以使用所有其他好的解决方案,比如DevExpress。我刚才说你应该尝试不使用主题,看看会发生什么。我想这是一个很好的开始。-1不使用主题不是你的选择。它是您的应用程序正在其计算机上运行的人。其次,OP已经说过Aero正在使用中,并且Aero在另一台机器上进行了测试,但没有显示问题。@Ken White我不同意你的看法。我选择不使用主题,因为我是应用程序开发人员,我知道什么可行,什么不可行。在我的情况下,我喜欢使用DevExpress皮肤库,避免使用有缺陷的delphi主题单元。正如我之前所说的(我可以看出你没有读过),如果你没有一张好的视频卡,主题可能会很糟糕。他试过另一台电脑,是的,但它有相同的显卡?这是同一台计算机?@Ken White,我说“完全避免使用主题”的意思是“根本不使用Delphi的主题单元”。你可以使用所有其他好的解决方案,比如DevExpress。我刚才说你应该尝试不使用主题,看看会发生什么。我想这是一个好的开始。