Ich habe festgestellt, dass etwas falsch ist, wenn ich das OnDragDrop
Ereignis und das OnDragOver
Ereignis verwende. Schauen Sie sich dieses Stück Code:Firemonkey möglicher Fehler mit Drag & Drop
procedure TForm1.Button1DragDrop(Sender: TObject; const [Ref] Data: TDragObject;
const [Ref] Point: TPointF);
var t,d: TButton;
begin
T := TButton(Sender);
D := TButton(Data.Source);
T.data := T.data + D.data;
Score(T.data);
D.data := 0;
T.isOk := true;
end;
procedure TForm1.Button1DragOver(Sender: TObject; const [Ref] Data: TDragObject;
const [Ref] Point: TPointF; var Operation: TDragOperation);
begin
if ((Sender is TButton) and (Data.Source is TButton) and not(Sender = Data.Source)
and (TButton(Sender).Text = TButton(Data.Source).Text) and (TButton(Data.Source).Text <> '')) then
begin
operation := TDragOperation.Move;
end
else
begin
operation := TDragOperation.None;
end;
end;
Dieser Code wird in Bezug auf die Form, die Sie in diesem Bild unten sehen können:
Dies ist ein Raster-Layout mit einigen Tasten nach innen; Button1 ist der obere linke und alle anderen Tasten haben die Ereignisse OnDragDrop
und OnDragOver
, die auf Button1 Ereignisse zeigen. Zum Beispiel look.
Wenn ich das Programm unter Windows (Zielplattform Win32 Bit) ausführen, kann ich die Schaltflächen im Raster mit dem Cursor und der Maus ziehen und ablegen. Das Problem tritt auf, wenn ich zu Android gehe, weil ich auf meinem Handy keine Buttons ziehen und ablegen kann. Irgendeine Idee?
Dies ist eine App mit mehreren Geräten, die mit Firemonkey erstellt wurde. Ich dachte, dass ich das DragDrop- und DragOver-Ereignis für jede Schaltfläche deklarieren muss, anstatt einen Verweis auf Button1 zu erstellen. Kann das sein?
AFAIK, IFMXDragDropService ist nur für Windows und Mac implementiert. –