TVirtualStringTree,树结构的位置

TVirtualStringTree, position of the tree structure

VirtualStringTree 的可视树结构始终位于第一列(索引 = 0 的列)。当您通过拖动列 header 更改列顺序时,树可能看起来很奇怪(下图)。是否可以在第一个可见列中始终看到结构?

该结构是基于TVirtualStringTree.Header.MainColumn显示的,每次移动列时都需要更改,因为移动列不会更改其索引,但TVirtualTreeColumn.Position 属性.最简单的方法是使用 OnHeaderDragged.

procedure HeaderDragged(Sender: TVTHeader; Column: TColumnIndex; OldPosition: Integer);
begin
  MyTree.Header.MainColumn := MyTree.Header.Columns.ColumnFromPosition(0);
end;