Есть ли способ добавить более одного компонента в редактор VirtualTreeView IVTEditLink?
Более одного компонента для редактора IVTEditLink в VirtualTreeView
Ответы (2)
Я бы использовал автономную форму в качестве контейнера редактора и оставил для этой цели концепцию IVTEditLink
, потому что:
- если вы используете, например.
TPanel
в качестве контейнера компонентов редактора, вам следует подумать о том, чтобы выбрать правильныйParent
из этогоTPanel
; редактор с большим количеством полей может перекрывать либо прямоугольник границ вашего виртуального дерева, либо даже границы вашей формы - гораздо проще реализовать
OnDeactivate
событие в форме, чем вTPanel
компоненте - можно вообще оставить понятие
IVTEditLink
, потому что здесь оно теряет смысл;IVTEditLink
был разработан для конкретных редакторов узлов и столбцов, а не для целых узлов; вы можете просто открыть редактор форм, когда наступит событиеOnEditing
или событие двойного щелчка и т. д.
Но если я не убедил вас оставить концепцию IVTEditLink
для редактирования узлов более чем в одном столбце, вы можете проверить this example
за реализацию формы как редактора для IVTEditLink
интерфейса.
person
TLama
schedule
08.01.2012
Очень хороший пример приложения. Спасибо.
- person James L.; 13.08.2017
Просто создайте свои собственные редакторы в событии 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;
person
Linas
schedule
08.01.2012
ОП хочет получить первый случай моих комментариев; составлять один редактор из более чем одного компонента, не использовать разные редакторы для разных колонок.
- person TLama; 08.01.2012
Тогда вопрос очень неясен. ОП должен отредактировать свой вопрос, чтобы было более понятно, чего он пытается достичь.
- person Linas; 08.01.2012
Согласитесь, поэтому я и попросил разъяснений в своих комментариях ;)
- person TLama; 08.01.2012
IVTEditLink
редактор из, я не знаюTPanel
и двухTEdit
блоков, то это возможно; единственное, что вы должны иметь в виду, - это реализовать интерфейсIVTEditLink
для этой панели, а также обрабатывать события для этих полей редактирования - если вы хотите, например. чтобы отменить редактирование приOnExit
редактировании, то в этом случае вам нужноCancelEditNode
. - person TLama   schedule 07.01.2012IVTEditLink
, например.TComboBox
для одного столбца иTDateTimePicker
для другого, затем просто укажите столбцы вOnCreateEditor
и создайте редактор, который хотите использовать;) - person TLama   schedule 07.01.2012