我正在尝试在更改高度和宽度时自动调整VST大小。我对其他放置的VCL组件没有这个问题,其中一些具有"伸展"的属性,例如Fimage,这使它们可以自动调整。VST保持固执,并保持节点和柱宽度。
- 我已经看到了标题 -> hoautoresize,hocolumtize。在此问题上,AutoSizeIndex<> -1并不是那么有用,因为我需要每列来缩小规模。我认为这就是为什么这些什么都不做。将AutoSizeIndex更改为我的最后一列(3,因为我有4列(,并且HoAutoresize = true;仍然不会影响我的列宽度。Holcolumtize是可以使用户调整列的设置,因此请不要运气
- 我已经看过Treeoptions->自动驾驶 -> toautochangescale和toautospancolumns。我发现,在我的情况下,ToautoSpancolumns是适得其反的,所以 。我的字体大小正在调整。
- 我找到了树。
- 所有4列的最小为10,所以那里没有问题
- 所有4个都有共坐共求,可觉,可核:= true和cofix,cosmartresize:= false fwiw
我想我只是打错了设置之类的组合。任何提示都很好,谢谢。
从您的帖子中我了解,当TVirtualStringTree
宽度更改时,您要自动调整所有列的宽度。如果您希望在行高度时发生这种情况,则可以相应地应用以下内容。
没有设置属性列宽度,但是在TVirtualStringTree
的OnResize
事件中实现很容易。
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%。
您需要将header-> autosizeIndex设置为最后一列索引,除了header-> hoautoresize至true。
如果您想以编程方式进行类似的事情:
vt.Header.Options := vt.Header.Options + [hoAutoResize];
vt.Header.AutoSizeIndex := vt.Header.Columns.GetLastVisibleColumn;