![]() |
Firemonkey Drag&Drop
Hallo,
ich würde gerne den Inhalt bzw. das Bild einer Image Komponente in eine andere Image Komponente per Drag&Drop ziehen. Dies war in einer Vcl Anwendung kein Problem aber bei FMX stellt ist das schon anders. Es fehlen so zum Beispiel die Proceduren BeginDrag oder Accept. Nun weis ich nicht wie ich dies in FMX realisieren soll. Danke im Voraus. Gruß OnlyOne |
AW: Firemonkey Drag&Drop
Welche Delphi Version?
|
AW: Firemonkey Drag&Drop
Zurzeit verwende ich XE6
|
AW: Firemonkey Drag&Drop
|
AW: Firemonkey Drag&Drop
Habe gehofft es gäbe eine schöne (einfache) Möglichkeit ohne Prozeduren zu überschreiben
oder mit dem Dragmode "dmManual". Aber trotzdem Danke :) |
AW: Firemonkey Drag&Drop
Eigentlich brauchst Du nichts zu überschreiben.
Ab Delphi XE6 wurde das "Accept" (Boolean) in der Ereignisprocedure "DragOver" durch "Operation" (TDragOperation) ersetzt. Statt Accept = True (oder false) setzt Du nun mit den einzelnen Auswahlmöglichkeiten für "Operation" (TDragOperation.xyz) das gewünschte Verhalten. "None" setzt Du, wenn keine Operation erlaubt sein soll, dann zeigt die Komponente auch keine grafische Rückmeldung an (bei den anderen Optionen erscheint der blaue Auswahlrahmen). Bei der Image-Komponente kannst Du z.B. DragMode auf "dmAutomatic" setzen, damit der Drag-Vorgang automatisch gestartet werden kann. Im "OnDragDrop"-Event kannst Du dann entsprechend reagieren. |
AW: Firemonkey Drag&Drop
Ich weiß, das Thema ist schon ziemlich alt. Leider hänge ich gerade an genau dieser Stelle.
Das DragDrop-Verhalten mit app-eigenen Komponenten, bei denen DragMode auf dmAutomatic steht funktioniert auch super. Ich möchte allerdings jetzt Dateien von außen auf das TDropTarget fallen lassen! Leider reagiert dieses überhaupt nicht.... Auch via Google und der Delphi-Hilfe bin ich leider nicht fündig geworden! Beste Grüße Björn |
AW: Firemonkey Drag&Drop
Hier mal ein Beispiel, um die Dateinamen per Windows Explorer (bzw. auf dem MAC vom Finder aus) in ein Memofeld zu ziehen:
Delphi-Quellcode:
Hinweis: In meinem letzten FMX-Buch zu Delphi 10.2 findest Du bei Bedarf unter Rezept 12 ein Beispiel, mit dem man Text z.B. aus den meisten Web-Browsern per Drag & Drop in sein Programm (z.B. ein Edit-Feld) ziehen kann.
procedure TForm6.Memo1DragDrop(Sender: TObject; const Data: TDragObject;
const Point: TPointF); var S: string; begin if (Data.files <> NIL) then begin for S in Data.Files do TMemo (Sender).lines.Add (s); end; end; procedure TForm6.Memo1DragOver(Sender: TObject; const Data: TDragObject; const Point: TPointF; var Operation: TDragOperation); begin Operation := TDragOperation.Copy; end; |
AW: Firemonkey Drag&Drop
Liste der Anhänge anzeigen (Anzahl: 2)
Guten Morgen!
Danke für die schnelle Antwort. Trotz Verwendung deines Codes reagiert mein Programm leider überhaupt nicht darauf (siehe Anhang)! Muss ich eventuell eine Option alá "DragDropActive" oder so was aktivieren? |
AW: Firemonkey Drag&Drop
Moin,
hast du bei der Komponente auf die Gedropt werden soll evtl. das Häkchen bei der HitTest Eigenschaft rausgenommen? |
AW: Firemonkey Drag&Drop
Nein.
Ich habe zum Testen des Codes von Harry mal ein völlig neues Projekt erstellt und dort auf die Form nur ein TMemo geworfen. D.h. es ist sonst nichts weiter drauf. Auch habe ich lediglich den Code von Harry implementiert. Aber leider passiert auch hier nichts.... |
AW: Firemonkey Drag&Drop
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe in der Anlage das Demo einmal als Source und einmal als Exe beigefügt. Das funktioniert hier sowohl außerhalb als auch innerhalb der VM (Virtualbox).
Funktioniert das bei Dir selber kompilierte Projekt nicht? Und wenn nein, dann mit der von mir kompilierten Exe (innerhalb oder außerhalb der VM)? |
AW: Firemonkey Drag&Drop
Hallo Harry,
habs mal gerade schnell getestet unter Win32, Win64, OSX. Funktioniert bei mir so wie es soll. Rollo |
AW: Firemonkey Drag&Drop
Guten Morgen!
Also die fertige exe funktioniert wie sie soll. Compiliere ich aber deinen Code selbst, dann will es wieder nicht! :( Edit: Ich habe gerade festgestellt, dass es nur dann nicht funktioniert, wenn ich das Programm aus Delphi heraus starte. Starte ich die erzeugte exe direkt, dann geht es! :shock: Woran kann das nun wieder liegen? |
AW: Firemonkey Drag&Drop
Start aus IDE mit oder ohne Debugger?
|
AW: Firemonkey Drag&Drop
Unter Win 8.1 un Delphi Tokyo geht das Beispiel einwandfrei. Hast du einen Breakpoint gesetzt?
Zitat:
|
AW: Firemonkey Drag&Drop
Guten Morgen,
ja, ich habe es auch mit Breakpoint versucht. Aber in dem Fall reagiert Garnichts... |
AW: Firemonkey Drag&Drop
Zitat:
|
AW: Firemonkey Drag&Drop
Nutzt Du Delphi in einer VM?
Habe da schon erlebt, dass da dann u.U. Drag & Drop nicht immer und in allen Funktionalitäten richtig funktioniert. Die Virtualmachine muss sich da einklinken (um evtl. auch Drag & Drop aus der VM in den Host zu ermöglichen), evtl. führt das zu Problemen, wenn die App nicht direkt gestartet wird, sondern über Delphi läuft, das sich da ja auch irgendwie in die Anwendung reinhängt. Und wenn die Hooks nicht richtig weitergereicht werden, kann es eben zu Problemen kommen. |
AW: Firemonkey Drag&Drop
Eine Sache über die ich im Zusammenhang mit Drag&Drop gestolpert bin ist HitTest. Diese property muss true sein, damit drag&drop funktioniert.
Am besten prüfen, auch für etwaige übergeordnete controls, besonders wenn es sich um TLayout handelt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz