【问题标题】:TVirtualStringTree ScaleBy StretchTVirtualStringTree ScaleBy Stretch
【发布时间】:2017-09-22 14:06:38
【问题描述】:

我正在尝试让 VST 在其高度和宽度发生更改时自动调整大小。 我对其他放置的 VCL 组件没有这个问题,其中一些具有像 TImage 这样的属性“Stretch”,可以让它们自动调整。 VST 保持顽固,并保持 nodeHeights 和 Column 宽度。

  • 我见过 Header->hoAutoResize, hoColumnResize。在这件事上, AutoSizeIndex -1 不是那么有用,因为我需要每一列都按比例缩小。我认为这就是为什么这些不做任何事情的原因。 将 AutoSizeIndex 更改为我的最后一列(3,因为我有 4 列)并且 hoAutoResize = True;仍然不会影响我的列宽。 hoColumnResize 是允许用户调整列大小的设置,所以也没有运气
  • 我见过 TreeOptions->AutoOptions->toAutoChangeScale 和 toAutoSpanColumns。 我发现 toAutoSpanColumns 在我的情况下会适得其反,所以它是关闭的。我的字体大小正在调整。
  • 我找到了 Tree.Scaleby,但我无法让它对我有利,而且它在我拥有的官方 .pdf 文档中没有记录。
  • 所有 4 列的 minWidth 均为 10,因此没有问题
  • 所有 4 个都有 coEnabled、coVisible、coResizable := True 和 coFixed、coSmartResize := False fwiw

我想我只是打错了设置组合之类的。 任何提示都会很棒,谢谢。

【问题讨论】:

  • 自动调整列宽应该可以工作。自动调整节点/行高似乎是一个不寻常的概念:网格和 TListView 等控件以及 Windows 资源管理器或 Outlook 等应用程序不这样做。
  • 我只是想在 VST 拥有的大量选项中,会有一些功能类似于“拉伸”的东西,只是具有列宽。原来你必须在 OnResize 中手动完成...

标签: delphi vcl delphi-10-seattle virtualtreeview tvirtualstringtree


【解决方案1】:

从您的帖子中,我了解到您希望在 TVirtualStringTree 宽度发生变化时按比例自动调整所有列的宽度。如果您希望行高也发生这种情况,您可以相应地应用以下内容。

属性列宽没有设置,但是在TVirtualStringTreeOnResize事件中很容易实现:

procedure TForm1.VSTResize(Sender: TObject);
begin
  VST.Header.Columns[0].Width := MulDiv(VST.Width, 50, 100);
  VST.Header.Columns[1].Width := MulDiv(VST.Width, 30, 100);
  VST.Header.Columns[2].Width := MulDiv(VST.Width, 20, 100);
end;

在上面,列保持为组件宽度的 50%、30% 和 20%。

【讨论】:

  • 效果很好,谢谢。 ANode:PVirtualNode; while Assigned(Anode) 开始 VST.NodeHeight[ANode] := trunc(VST.Height / 16); ANode := VST.GetNextVisible(ANode);结束;
【解决方案2】:

您需要将 Header->AutoSizeIndex 设置为您最后一列的索引,除了 Header->hoAutoResize 为 true。

如果您希望以编程方式执行此操作,请执行以下操作:

vt.Header.Options := vt.Header.Options + [hoAutoResize];
vt.Header.AutoSizeIndex := vt.Header.Columns.GetLastVisibleColumn;

【讨论】:

  • 我编辑了我的帖子。在我发布之前,我已经阅读了您链接的帖子。我不让它像那样工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-27
  • 1970-01-01
  • 2012-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多