Несколько компонентов для редактора IVTEditLink в VirtualTreeView

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

2 ответа

Решение

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

  • если вы используете, например, TPanel в качестве контейнера компонента редактора, то вы должны рассмотреть, чтобы выбрать правильный Parent того, что TPanel; редактор со многими полями может перекрывать либо прямоугольник границ вашего виртуального дерева, либо даже границы вашей формы
  • это гораздо проще реализовать 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;
Другие вопросы по тегам