有没有办法将多个组件添加到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;