我正在尝试使用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;
这似乎有效,仍在测试中!