Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > VT drag&drop


Автор: Dapo 18.5.2010, 03:39
Приветствую форумчан.
Работал с  VT горя не знал, пока не столкнулся с необходимостью Drag&Drop. И задача, вроде, простая: необходимо копировать узлы из одной ветки дерева в другую. Вот код который это выполняет (всяческие проверки я опустил):
Код

procedure TfrmMain.vtCfgDragDrop(Sender: TBaseVirtualTree; Source: TObject;
  DataObject: IDataObject; Formats: TFormatArray; Shift: TShiftState;
  Pt: TPoint; var Effect: Integer; Mode: TDropMode);
begin
  Effect:=DROPEFFECT_COPY;
  vtCfg.ProcessDrop(DataObject,Sender.DropTargetNode,Effect,amAddChildLast);
end;

Копируются пустые ноды, т.е. внутри TargetNode создается такая же структура какую перетаскиваю, но пустая .Как же мне их проинициализировать в соответствии с теми нодами которые перетащил (необходимо выдернуть названия привязанных объектов и изменить свойство-указатель объекта на другой тип данных)? Я так понимаю, нужно получить доступ к вновь созданным нодам, но как? Доступ к нодам перетаскиваемым нужно получить через Sender.FocusedNode?
Cвойства VT: dmAutomatic, dtOLE, ClipboardFormats = Virtual Tree Data;
Использую VT 4.8.6.

Заранее благодарен всем откликнувшимся.

Автор: kami 18.5.2010, 07:26
Осталось сделать 2 события:
OnLoadNode и OnSaveNode.

Автор: Dapo 18.5.2010, 07:38
Извиняюсь. версия 4.8.6.

Пристальнее посмотрел в статью, первую ноду из перетаскиваемых можем взять Source.GetSortedSelection? А первую из вновь созданных - перебором дочек TargetNode пока не наткнемся на "пустую ноду"? smile

Добавлено через 14 минут и 45 секунд
kami, спасибо ). Если бы я вгляделся еще пристальнее то, наверное, уже искал бы глаза где-нибудь под столом! smile Ты очень вовремя!
Вопрос снят.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)