delphi - 存在组时 ListView 控件绘制不正确

标签 delphi delphi-xe delphi-xe2

我正在尝试使用 ListView 组,结果发现当应用程序启动时控件显示不正确。

Original form

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

Resized form

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

最佳答案

这是我复制的 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

事实证明,解决问题的另一种方法是移动 ViewStyle DFM 文件中的条目,使其出现在 Items 之前入口。因此,该问题的另一种解决方法是在运行时添加项目。事实上,这可能解释了为什么没有发现这个错误,因为我打赌绝大多数 ListView 代码在运行时添加项目。

关于delphi - 存在组时 ListView 控件绘制不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8160411/

相关文章:

Delphi .dpr 和 .dproj - 不匹配的后果

delphi - 我可以将 map2dbg 与 64 位 Delphi 可执行文件一起使用吗?

delphi - 模块 'rtl160.bpl' 中地址 50043a45 处的访问冲突。读取地址00000000

delphi - 无法在 Delphi 7 的控制台应用程序中使用随机方法

email - 使用具有多个抄送的 Indy 发送电子邮件。如果不正确则没有人收到邮件

delphi - TVirtualStringTree ScaleBy Stretch

delphi - 禁用表单仍然允许子控件接收输入

delphi - 如何检测 TWebBrowser 何时完成页面下载?

json - 如何使用 SuperObject 从 JSON 读取 DateTime?

delphi - DUnit: 'Global' 设置和拆卸