3

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

4

2 回答 2

7

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

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

但是,如果我没有说服您保留IVTEditLink多列节点编辑的概念,那么您可以检查this example表单作为IVTEditLink界面编辑器的实现。

于 2012-01-08T14:32:25.170 回答
0

只需在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;
于 2012-01-08T12:39:30.160 回答