delphi 如何在虚拟树视图中隐藏展开/折叠按钮?

jhkqcmku  于 2023-04-20  发布在  其他
关注(0)|答案(2)|浏览(145)

我使用VirtualStringTree(VST)来显示分组的数据,标题详细信息。我需要有一个选项来允许用户展开,折叠标题以查看详细信息,在某些情况下,我需要将数据显示为静态视图,它们不能展开,折叠,只能看到完整的展开树:
下面是用户可以展开、折叠节点和子节点的示例:

这里是一个例子,当我想阻止用户展开/折叠节点,总是看到所有展开(或任何显示):

在这个测试中,我通过“允许展开/折叠”复选框进行控制。
我通过添加以下内容来防止扩展和崩溃:

Allowed:=CheckBox1.Checked;

进入OnCollapsing/OnExpanding:

procedure TMainForm.VSTCollapsing(Sender: TBaseVirtualTree;
  Node: PVirtualNode; var Allowed: Boolean);
begin
  Allowed:=CheckBox1.Checked;
end;

procedure TMainForm.VSTExpanding(Sender: TBaseVirtualTree;
  Node: PVirtualNode; var Allowed: Boolean);
begin
  Allowed:=CheckBox1.Checked;
end;

我还显示/隐藏基于复选框的树线

procedure TMainForm.CheckBox1Click(Sender: TObject);
begin
  if CheckBox1.Checked then
    VST.TreeOptions.PaintOptions:=VST.TreeOptions.PaintOptions + [toShowTreeLines]
  else
    VST.TreeOptions.PaintOptions:=VST.TreeOptions.PaintOptions - [toShowTreeLines];
end;

当我想阻止用户展开、折叠节点时,如何隐藏这个小加号,有什么建议吗?
编辑:

为了消除与表单图标的混淆,这是Virtual Treeivew 5演示库中的演示项目。IDE中的表单具有 Delphi XE 7图标,当运行项目时会出现此旧图标。不知道为什么。只是想确保清楚我使用的是XE 7而不是任何旧的Delphi版本,其中相同的解决方案可能不适用。
在IDE中,图标为XE 7图标:

q5lcpyga

q5lcpyga1#

您要查找的附加选项是toShowButtons。请在使用toShowTreeLines的相同位置使用它。
该选项在TVTPaintOption的声明中的 VirtualTrees.pas 中进行了说明:

toShowButtons,             // Display collapse/expand buttons left to a node.
sbdsn5lh

sbdsn5lh2#

除了@Rob Kennedy的回答,除了选项“toShowButtons”之外,可能需要的另一个选项(对于最高层次级别)是选项“toShowRoot”

相关问题