我使用Delphi XE,我想制作一个标准的ListView行为,看起来就像我想要的那样。 我希望listview是vsReport所以我可以为我的项目组。 在设计时,我创建了列(一列名为Topic),两组,以及每组的几个项目。
在设计时,ListView看起来很棒,但在运行时,我的第一个组部分隐藏在列标题下。以下是图片:
在设计时:
在运行时:
这是我的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 {
如何防止这种情况发生?
答案 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;