【问题标题】: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”语句,我意识到这一点。我刚刚把它放在那里,在手被承认懒得改变它之前。