2010-10-20 24 views
2

我有一个Windows窗体上有966个元素的TListBox。当我点击表单上的一个按钮时,将选择这些字符串的一个子集(其中大约200个)。德尔福TListBox内容溢出时选择(Win7,32位,主题)

如果我现在通过单击任务栏上的任何位置来重新定位我的应用程序,则我的TListBox中的条目会向上流血,因此它们在TListBox的边界之上可见。他们幸运地出现在它们正上方的TGroupBox组件后面 - 但是这仍然看起来非常糟糕。

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

我试着直接改变选择状态后,发出一个PostMessage(Self.Handle,WM_PAINT,0,0),前面有一个ListBox.Refresh。这没有帮助。

任何帮助将不胜感激。请告知您是否需要更多详细信息。

欢呼声中,邓肯

+0

我无法重现Windows 7 64位,德尔福2009年的问题。你确定这是与大量的列表项有关吗?尝试缩小问题范围。另外:什么是“TSelectBox”?我想你是指'TListBox'。 – 2010-10-20 18:52:06

+0

@Andreas - 是的,对不起,我的意思是TListBox。我也无法在任何其他电脑上重现这一点。我测试过的其他计算机上有Aero,但都有独立的图形适配器(问题计算机使用Intel集成适配器)。 – Duncan 2010-10-20 19:18:56

+4

然后我尝试的第一步是更新图形驱动程序... – 2010-10-20 21:22:03

回答

-1

您是否使用XPManifest单元,或者你为应用程式启用主题?如果是这样,请不要使用它来查看会发生什么。如果你没有一个好的视频卡,这可能是非常糟糕的。

我的2美分?完全避免使用主题。它很简单,不能很好地工作。

+0

-1这不是*你的*选择不使用主题。这是你的应用程序运行在其计算机上的人。其次,OP已经表示Aero正在使用,并且Aero在另一台没有显示问题的机器上运行测试。 – 2011-03-17 02:04:34

+0

@肯白我不同意你。这是我选择不使用主题,因为我是应用程序开发人员,我知道什么可行,什么不可行。在我的情况下,我喜欢使用DevExpress皮肤库并避免bug的delphi主题单元。正如我之前所说(我可以看到你没看过它),如果你没有一个好的视频卡,主题可能会非常糟糕。他在另一台电脑上试过,是的,但它有相同的显卡?它是同一台计算机吗? – 2011-03-17 02:28:39

+0

@Ken White当我说“避免使用主题”时,我的意思是“根本不使用Delphi的主题单元”。你可以像DevExpress一样拥有所有其他优秀的解决方案。 – 2011-03-17 02:31:16