Несколько компонентов для редактора 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;