Есть ли способ добавить более одного компонента в редактор IVTEditLink VirtualTreeView?Более одного компонента для редактора IVTEditLink в VirtualTreeView
ответ
Я хотел бы использовать отдельную форму в качестве контейнера редактора и оставить IVTEditLink
концепцию для этой цели, потому что:
- , если вы используете, например,
TPanel
в качестве контейнера компонента-редактора, тогда вы должны рассмотреть возможность выбора правильногоParent
этогоTPanel
; редактор с большим количеством полей может перекрываться либо границы прямоугольника вашего виртуального дерева или даже границ вашей формы - это гораздо легче осуществить
OnDeactivate
события в форму, чемTPanel
компонента - вы можете оставить
IVTEditLink
понятия вообще потому что здесь он утрачивает свой смысл;IVTEditLink
был разработан для конкретных редакторов узлов и столбцов, а не для всех узлов; вы можете просто открыть редактор форм, когда прибываетOnEditing
события, или при двойном щелчке событии и т.д.
Но если бы я не убедить вас покинуть IVTEditLink
концепции редактирования узла более одного столбца, то вы можете check 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;
OP хочет первый случай моих комментариев; составлять один редактор из более чем одного компонента, а не использовать разные редакторы для разных столбцов. – TLama
Вопрос очень неясен. OP должен отредактировать свой вопрос, чтобы сделать его более ясным, чего он пытается достичь. – Linas
Согласитесь, вот почему я просил объяснения в своих комментариях;) – TLama
Я не уверен, что именно вы здесь задаете. Если вы хотите написать свой редактор 'IVTEditLink', я не знаю' TPanel' и два 'TEdit', тогда это возможно; единственное, что вы должны иметь в виду: реализовать интерфейс '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' для отмены редактирования, когда вы 'OnExit' в окне редактирования, тогда вы должны« CancelEditNode »в этом событии. – TLama
Или если вы спрашиваете, можете ли вы реализовать более одного интерфейса «IVTEditLink», например. 'TComboBox' для одного столбца и' TDateTimePicker' для другого, а затем просто введите столбцы в 'OnCreateEditor' и создайте редактор, который хотите использовать;) – TLama
благодарим вас за ответ. если бы это было возможно, я бы отметил ваш пост хорошим ответом. – Knobik