Hi generic,
erst mal Danke für die Antwort. Ich hatte vergessen bei dmOnNode -> Accept := true zu setzen.
Damit kann ich die Zeile zumindest auf die oberste Stelle verschieben.
Das Problem das die darunterliegende Zeile markiert wird bleibt aber bestehen.
Das passiert an allen Spalten die einen Text enthalten (egal obe Zeichen oder Zahl).
Nur bei der Spalte mit der Grafik passiert das nicht.
Delphi-Quellcode:
procedure TfrmMain.vstDragOver(Sender: TBaseVirtualTree; Source: TObject;
Shift: TShiftState; State: TDragState; Pt: TPoint; Mode: TDropMode;
var Effect: Integer; var Accept: Boolean);
begin
case Mode of
dmAbove, dmBelow, dmOnNode: Accept := true; // **** hier hat dmOnNode gefehlt
else
Accept := false;
end;
end;
procedure TfrmMain.vstDragDrop(Sender: TBaseVirtualTree; Source: TObject;
DataObject: IDataObject; Formats: TFormatArray; Shift: TShiftState;
Pt: TPoint; var Effect: Integer; Mode: TDropMode);
var
Node: PVirtualNode;
AttachMode: TVTNodeAttachMode;
begin
(* Eigenschaften setzen für drag and drop:
DragMode = dmAutomatic
DragType = dtOLE
ClipboardFormat - Virtual Tree Data auf True *)
Node := Sender.DropTargetNode;
case Mode of
dmAbove: AttachMode := amInsertBefore;
dmBelow: AttachMode := amInsertAfter;
dmOnNode: AttachMode := amInsertBefore;
else
exit;
end;
Sender.ProcessDrop(DataObject, Node, Effect, AttachMode);
end;
Gruss Alois