Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Firemonkey Drag&Drop (https://www.delphipraxis.net/180900-firemonkey-drag-drop.html)

OnlyOne 29. Jun 2014 19:56

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

Sir Rufo 29. Jun 2014 20:22

AW: Firemonkey Drag&Drop
 
Welche Delphi Version?

OnlyOne 29. Jun 2014 20:23

AW: Firemonkey Drag&Drop
 
Zurzeit verwende ich XE6

Sir Rufo 29. Jun 2014 20:39

AW: Firemonkey Drag&Drop
 
Einmal https://forums.embarcadero.com/threa...ssageID=447850

Zweimal Bei Google suchenfmx drag and drop (reichlich)

OnlyOne 30. Jun 2014 15:43

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 :)

Harry Stahl 30. Jun 2014 19:41

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.

sintronic86 21. Nov 2017 15:34

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

Harry Stahl 21. Nov 2017 17:59

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:
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;
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.

sintronic86 22. Nov 2017 07:26

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?

Towmuz 22. Nov 2017 10:27

AW: Firemonkey Drag&Drop
 
Moin,

hast du bei der Komponente auf die Gedropt werden soll evtl. das Häkchen bei der HitTest Eigenschaft rausgenommen?

sintronic86 22. Nov 2017 10:51

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....

Harry Stahl 22. Nov 2017 18:33

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)?

Rollo62 22. Nov 2017 18:43

AW: Firemonkey Drag&Drop
 
Hallo Harry,

habs mal gerade schnell getestet unter Win32, Win64, OSX.
Funktioniert bei mir so wie es soll.

Rollo

sintronic86 23. Nov 2017 07:15

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?

mkinzler 23. Nov 2017 11:04

AW: Firemonkey Drag&Drop
 
Start aus IDE mit oder ohne Debugger?

MichaelT 23. Nov 2017 13:10

AW: Firemonkey Drag&Drop
 
Unter Win 8.1 un Delphi Tokyo geht das Beispiel einwandfrei. Hast du einen Breakpoint gesetzt?


Zitat:

Zitat von sintronic86 (Beitrag 1386915)
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?


sintronic86 27. Nov 2017 07:25

AW: Firemonkey Drag&Drop
 
Guten Morgen,

ja, ich habe es auch mit Breakpoint versucht. Aber in dem Fall reagiert Garnichts...

mkinzler 27. Nov 2017 16:00

AW: Firemonkey Drag&Drop
 
Zitat:

Zitat von sintronic86 (Beitrag 1387223)
Guten Morgen,

ja, ich habe es auch mit Breakpoint versucht. Aber in dem Fall reagiert Garnichts...

Wurde das Projekt im Debugmodus kompiliert?

Harry Stahl 27. Nov 2017 18:09

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.

mucsim 23. Jan 2018 12:06

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