在Firemonkey中设置Treeview项目的不同高度

时间:2014-01-14 12:38:57

标签: delphi firemonkey delphi-xe5

我正在尝试使用Treeview作为菜单。我正在使用不同的treeviewItem样式。 标题(treeviewItems)具有不同的风格。

此样式的高度为40.但这绝不会转换为Treeview。 您无法使用样式

更改TreeviewItemHeight

您可以设置树视图的ItemHeight属性。如果您希望所有项具有相同高度,则此功能非常有效。我想要不同的高度,具体取决于TreeviewItem的级别。

我接下来尝试的是基于treeviewItem创建一个类并覆盖它的Applystylelookup。

这有效,

procedure TBiggerTreeviewItem.ApplyStylelookup;
begin
  Height:=40;
  inherited;
end;

constructor TBiggerTreeviewItem.Create(aOwner: TComponent);
begin
  inherited Create(aOwner);
  StyleLookup:='treeviewitemtitlestyle';
end;

问题在于,当您一次添加 MULTIPLE treeviewItems时,新项目的位置就像高度是默认值一样。所以多个treeviewitems会重叠。

然后,如果添加另一组TreeviewItems,则所有先前的项目都将设置为正确的位置,并且新添加的重叠。

begin
 tmpT:=TBiggerTreeviewItem.Create(Treeview);
 Treeview.AddObject(tmpT);
  tmpT:=TBiggerTreeviewItem.Create(Treeview);
 Treeview.AddObject(tmpT);
end;

滚动时,项目也会重新定位并正确显示。我认为这是一个错误,会有解决方法吗?

编辑:当您将对象添加到树视图时,heigt设置为treeview.ItemHeight属性,因此在添加项目后,我将项目的高度设置为40.这可以被认为是一种解决方法?

begin
 tmpT:=TBiggerTreeviewItem.Create(Treeview);
 Treeview.AddObject(tmpT);
 tmpT.height:=40;
 tmpT:=TBiggerTreeviewItem.Create(Treeview);
 Treeview.AddObject(tmpT);
 tmpT.height:=40;
end;

这似乎有效,仍在测试中!

0 个答案:

没有答案