Einzelnen Beitrag anzeigen

Alois

Registriert seit: 23. Jul 2005
71 Beiträge
 
Delphi 10 Seattle Professional
 
#3

Re: Drag&Drop mit VirtualTreeView

  Alt 5. Jun 2009, 21:40
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
  Mit Zitat antworten Zitat