存在组时,列表视图控件绘制不正确

时间:2011-11-16 23:52:22

标签: delphi delphi-xe delphi-xe2

我正在尝试使用列表视图组,但是当应用程序启动时,控件显示不正确。

Original form

只要我调整表单大小,它就会正确显示:

Resized form

我不明白发生了什么。谁能解释一下?

1 个答案:

答案 0 :(得分:4)

这是我重现的Delphi控件中的一个错误。我不确定导致这个错误的原因。我已将此作为QC#101104提交给Quality Central。

我通过将以下代码添加到表单的OnShow事件中找到了一个简单的解决方法。

ListView1.Align := alNone;
ListView1.Align := alClient;

以下DFM文件足以证明问题:

object MyForm: TMyForm
  Left = 0
  Top = 0
  ClientHeight = 300
  ClientWidth = 635
  object ListView1: TListView
    Left = 200
    Top = 96
    Width = 250
    Height = 150
    Align = alClient
    Columns = <
      item
        Caption = 'Column'
      end>
    Groups = <
      item
        Header = 'Group header'
        GroupID = 0
      end>
    Items.ItemData = {
      052A0000000100000000000000FFFFFFFFFFFFFFFF0000000000000000000000
      000854006800650020006900740065006D00}
    GroupView = True
    ViewStyle = vsReport
  end
end

事实证明,另一种解决问题的方法是移动DFM文件中的ViewStyle条目,使其出现在Items条目之前。因此问题的另一个解决方法是在运行时添加项目。事实上,这可能解释了为什么没有找到这个bug,因为我敢打赌绝大多数列表视图代码都会在运行时添加这些项目。