2017-11-07 3 views
0

Ich habe eine Listbox mit Elementen darin.Delphi Tokyo Firemonkey Drag Drop innerhalb derselben Listbox

Ich muss Elemente in der gleichen Listbox mit der Maus neu anordnen.

AllowDrag ist auf True festgelegt.

DragMode ist dmManual.

Hittest ist wahr.

Es funktioniert nur, wenn Sie zuerst das Element auswählen, indem Sie auf klicken und dann die linke Maustaste loslassen, und dann auf das gleiche Element klicken und ziehen/ablegen.

Ich suchte in Google, und sah, jemand anderes hat das gleiche Problem, und fand keine Lösung.

Wie kann ich einen Drag/Drop innerhalb der gleichen Listbox erstellen?

Antwort

0

Ich mache es mit dem MouseDown-Ereignis und der Hilfe der Einheit FMX.Platform.

procedure TForm2.ListBox1MouseDown(Sender: TObject; Button: TMouseButton; 
    Shift: TShiftState; X, Y: Single); 
var 
    doData: TDragObject; 
    Svc : IFMXDragDropService; 
    Img : TBitmap; 
begin 
    if Assigned(ListBox1.ItemByPoint(X, Y)) and TPlatformServices.Current.SupportsPlatformService(IFMXDragDropService, Svc) then 
    begin 
     doData.Source := ListBox1.ItemByPoint(X, Y); 
     Img   := ListBox1.ItemByPoint(X, Y).MakeScreenshot; 
     Svc.BeginDragDrop(Self, doData, Img); 
    end; 
end;