VirtualTreeView中的IVTEditLink编辑器有多个组件

时间:2012-01-07 16:45:55

标签: delphi virtualtreeview

有没有办法在VirtualTreeView的IVTEditLink编辑器中添加多个组件?

2 个答案:

答案 0 :(得分:6)

我会使用独立表单作为编辑器容器,并为此目的保留IVTEditLink概念,因为:

  • 如果您使用例如TPanel作为编辑器组件容器,您应该考虑选择Parent的正确TPanel;具有许多字段的编辑器可能与虚拟树的边界矩形或甚至表单的边界重叠
  • OnDeactivate事件实施到表单比TPanel组件
  • 更容易
  • 你可以完全放弃IVTEditLink概念,因为它在这里失去了意义; IVTEditLink是为特定节点和列编辑器而不是整个节点设计的;您可以在OnEditing事件到达时或双击事件等时打开表单编辑器。

但是,如果我没有说服您将IVTEditLink概念留给多个列的节点编辑,那么您可以检查this example作为{{1的编辑器的表单的实现接口。

答案 1 :(得分:0)

只需在OnCreateEditor活动中创建自定义编辑器即可。由于此事件提供Column参数,因此您可以为不同的列创建不同的编辑器。 E.g:

procedure TForm1.OnCreateEditor(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Column: TColumnIndex; out EditLink: IVTEditLink);
begin
  case Column of
    0: EditLink := TColorEditLink.Create;
    1: EditLink := TFontEditLink.Create;
  //etc..
  end;
end;