【问题标题】:How to re-size a ListBoxItem when a TTreeItem is expanded展开树项时如何调整列表框项的大小
【发布时间】:2013-11-09 00:28:18
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios delphi mobile treeview delphi-xe5


    【解决方案1】:

    对于任何寻找答案的人,这就是我想出的……请记住,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”语句,我意识到这一点。我刚刚把它放在那里,在手被承认懒得改变它之前。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-24
      • 2014-03-25
      • 2012-10-17
      • 1970-01-01
      • 2013-02-07
      • 2015-07-02
      相关资源
      最近更新 更多