Schau dir mal die Events OnDragOver und OnDragDrop an. In OnDragOver kannst du die "Erlaubnis" des droppens über eine "Accept" Variable steuern. Z.B.:
Delphi-Quellcode:
procedure Bla.VTDragOver(Sender: TBaseVirtualTree;
Source: TObject; Shift: TShiftState; State: TDragState; Pt: TPoint;
Mode: TDropMode; var Effect: Integer; var Accept: Boolean);
var
Node: PVirtualNode;
begin
Accept := False;
if Source = Sender then begin
Node := Sender.GetNodeAt(Pt.X, Pt.Y);
Accept := Assigned(Node) and (Sender.GetNodeLevel(Node) = 1);
end;
end;