Несколько компонентов для редактора IVTEditLink в VirtualTreeView - PullRequest
3 голосов
/ 07 января 2012

Есть ли способ добавить более одного компонента в редактор IVTEditLink VirtualTreeView?

Ответы [ 2 ]

6 голосов
/ 08 января 2012

Я бы использовал автономную форму в качестве контейнера редактора и оставил для этой цели концепцию IVTEditLink, потому что:

  • , если вы используете, например, TPanel в качестве контейнера компонента редактора, вам следует рассмотретьправильно выбрать Parent из этого TPanel;редактор со многими полями может перекрывать либо прямоугольник границ вашего виртуального дерева, либо даже границы вашей формы
  • гораздо проще реализовать OnDeactivate событие в форме, чем TPanel компонент
  • вы можете вообще оставить концепцию IVTEditLink, потому что она теряет здесь смысл;IVTEditLink был разработан для определенных узлов и редакторов столбцов, а не для целых узлов;вы можете просто открыть редактор форм, когда наступит событие OnEditing, или при событии двойного щелчка и т. д.

Но если я не убедил вас оставить концепцию IVTEditLink для редактирования узлаболее одного столбца, то вы можете проверить this example для реализации формы в качестве редактора для интерфейса IVTEditLink.

0 голосов
/ 08 января 2012

Просто создайте свои собственные редакторы в событии 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;
...