如何防止ListView标头遮盖第一组的顶部?

时间:2015-09-16 18:11:24

标签: delphi listview delphi-xe

我使用Delphi XE,我想制作一个标准的ListView行为,看起来就像我想要的那样。 我希望listview是vsReport所以我可以为我的项目组。 在设计时,我创建了列(一列名为Topic),两组,以及每组的几个项目。

在设计时,ListView看起来很棒,但在运行时,我的第一个组部分隐藏在列标题下。以下是图片:

在设计时:

enter image description here

在运行时:

enter image description here

这是我的DFM

curl http://localhost:3000
<!DOCTYPE html>
<html>
<head>
  <title>The page you were looking for doesn't exist (404)</title>
  <meta name="viewport" content="width=device-width,initial-scale=1">
  <style>
  body {

如何防止这种情况发生?

1 个答案:

答案 0 :(得分:2)

即使在Delphi 10 Seattle中也存在此行为。我不确定是什么导致它,但你可以通过对列表视图属性进行重大更改,然后还原该更改来解决它。这似乎足以让列表视图赶上来。例如,这就足够了:

procedure TForm1.FormCreate(Sender: TObject);
begin
  ListView1.ViewStyle := vsIcon;
  ListView1.ViewStyle := vsReport;
end;

但这有点过头了。深入研究这段代码的效果,重点是重建窗口。可以这样做:

type
  TProtectedHackListView = class(TListView);

procedure TForm1.FormCreate(Sender: TObject);
begin
  TProtectedHackListView(ListView1).RecreateWnd;
end;

甚至可以重新创建表单,从而重新创建子项:

procedure TForm1.FormCreate(Sender: TObject);
begin
  RecreateWnd;
end;