VirtualTreeView中IVTEditLink编辑器的多个组件



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

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

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

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

只需在OnCreateEditor事件中创建自定义编辑器。因为此事件提供了Column参数,所以您可以为不同的列创建不同的编辑器。例如:

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;

最新更新