在tvTreeCollapsed和tvTreeExpanded 事件中
var
si: TScrollInfo;
begin
si.cbSize := SizeOf(si);
si.fMask := SIF_ALL;
tvTree.Width := 1;
if GetScrollInfo(tvTree.Handle, SB_HORZ, si) then
begin
tvTree.Width := if si.nMax;
end;
end;
//TreeView 自动宽度
//有时会有问题 请自测
function GetWidthOfTreeView(TreeView: TTreeView): Integer;
var
i, W: Integer;
begin
Result := 0;
for i := 0 to TreeView.items.Count - 1 do
if TreeView.Items[i].IsVisible then
begin
W := TreeView.Items[i].DisplayRect(True).Right;
if Result < W then
Result := W;
end;
if Result<251 then Result:=221;
Inc(Result, 30);
end;
//在tvTreeCollapsed和tvTreeExpanded 事件中
tvTree.Width:=GetWidthOfTreeView(tvTree);