gpt4 book ai didi

delphi - 当隐藏一列时,VirtualStringTree 列应调整大小

转载 作者:行者123 更新时间:2023-12-03 15:02:38 26 4
gpt4 key购买 nike

我有一个包含 3 列的 VST,均匀地占用可用空间。

  • 我已在 Header.Options 中设置了 hoAutoSpring,并且
  • 所有列都设置了 Column[x].OptioncoAutoSpring

现在我希望能够隐藏最后一列并保持其他列均匀地占用可用空间(有点像 alClient 的控件)。

当我仅将列设置为不可见(见下文)时,该列占用的空间就不会被使用。

VST.Header.Columns[2].Options:=VST.Header.Columns[2].Options - [coVisible];

当我将 Header.Options.hoAutoResize 设置为 True 并将 Header.AutoSizeIndex 设置为 1 时,然后第二列将占据所有新空间。

有没有一种方法可以告诉列填满可用空间并均匀调整大小?

屏幕截图:

enter image description here

最佳答案

感谢大家快速且高质量的回复!

因为似乎没有内置的方法来解决我的问题,所以我按以下方式编码(以防万一有人遇到类似的问题):

// Show/hide a column and spread the space on all other visible columns
// so that the proportions remain the same (as if AutoSpring was used)
procedure ChangeColumnVisibility(Tree: TVirtualStringTree; Column: TColumnIndex;
NewVisible: boolean);
var Col : TVirtualTreeColumn;
begin
Col:=Tree.Header.Columns[Column];
if not (NewVisible xor (coVisible in Col.Options)) then
Exit;

if not NewVisible then
begin
Col.Options:=Col.Options - [coVisible];
Tree.Header.ResizeColumns(Col.Width, 0, Tree.Header.Columns.Count-1);
end
else
begin
Tree.Header.ResizeColumns(-Col.Width, 0, Tree.Header.Columns.Count-1);
Col.Options:=Col.Options + [coVisible];
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
ChangeColumnVisibility(VST, 2, not (coVisible in VST.Header.Columns[2].Options));
end;

关于delphi - 当隐藏一列时,VirtualStringTree 列应调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19978395/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com