TVirtualStringTree ScaleBy Stretch

时间:2017-04-25 13:55:31

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

我正在尝试让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

我想我只是碰到错误的设置组合或其他东西。 任何提示都会很棒,谢谢。

2 个答案:

答案 0 :(得分:1)

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

没有设置属性列宽,但在OnResize的{​​{1}}事件中很容易实现:

TVirtualStringTree

在上文中,色谱柱保持为组分宽度的50%,30%和20%。

答案 1 :(得分:0)

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

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

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