0

在我的应用程序中,我有一个带有搜索框的 TListBox。每个项目中都有一个用于数据显示的 TTreeView(需要展开/折叠功能)。为什么我要这样做而不是只使用没有 TListbox 的 TTreeView,因为我想要可以与 TListBox 一起使用的搜索功能,而 TTreeview 不能很好地滚动。无论如何,所以我的问题是,假设我有每个 ListBoxItem.size := 80 .. 它看起来很棒,效果很好等等等等......但是当我想在每个 ListBoxItem 中展开 TreeViewItem 以查看它的孩子时TreeViewItems,然后我看不到所有数据,我需要重新调整 TListBoxItem 的大小。

展开 TTreeItem 时如何重新调整 ListBoxItem 的大小?

使用 Delphi Xe5 开发 iOS 应用程序。

4

1 回答 1

0

对于任何寻找答案的人,这就是我想出的……请记住,TreeView 及其所有节点都是动态创建的,并放置在动态创建的列表框项中。所有 treeView 和 TreeviewItem 组件的所有 .HitTest 属性都设置为“False”,并且我在每个树视图的展开按钮上放置了一个图像,以在下面执行我自己的操作:

procedure TMain_Form.Image1Click(Sender: TObject);
var
Item    : TListBoxItem;
view    : TTreeView;
tree1,
tree2   : TTreeViewItem;
height  : extended;
i       :integer;
begin
Item := TListBoxItem.Create(nil);
Item := TImage(Sender).Parent as TListBoxItem;
view := Item.Children.Items[1] as TTreeview;
tree1 := View.Items[0];
i := 0; height :=  0;
while i <> Tree1.Count do begin
  tree2 := tree1.Items[i];
  height := height + 40;
  i := i + 1;
end;
if item.Height = 40 then begin
  tree1.ExpandAll;
  item.Height := Item.height + height;
  view.height := Item.height;
end else begin
  View.CollapseAll;
  Item.Height := 40;
end;

不需要'while'语句,我意识到这一点。我刚刚把它放在那里,在手被承认懒得改变它之前。

于 2013-11-08T16:28:18.873 回答