Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi Drag&Drop mit Dateien: Files geht verloren (https://www.delphipraxis.net/205439-drag-drop-mit-dateien-files-geht-verloren.html)

philipp.hofmann 9. Sep 2020 18:51


Drag&Drop mit Dateien: Files geht verloren
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hi,

wie kann man unter FMX eine Datei per Drag&Drop einfügen?

Mit dem folgenden Code geht es schon mal nicht. Ich sehe zwar, dass das Drag&Drop funktioniert,
aber im Ziel-Feld wird das TDragObject nicht als File erkannt und somit abgelehnt:

Delphi-Quellcode:
procedure TicTrainerF.doBrowserDragDrop(Sender: TObject);
var
  Svc: IFMXDragDropService;
  DragData: TDragObject;
begin
  if (TPlatformServices.Current.SupportsPlatformService(IFMXDragDropService,Svc)) then
  begin
    DragData.Source:=sender;
    DragData.Data:=dragDropFilename;
    setLength(DragData.Files,1);
    DragData.Files[0]:=dragDropFilename;
    Svc.BeginDragDrop(Self,DragData,bitmapContainer.Items[6].Bitmap);
  end;
end;
Ich habe es mittlerweile auch im EMBT-DragDrop-Example nachstellen können. Wenn ich innerhalb der gleichen Exe-Instanz ein File verschiebe, dann geht dies und es wird auch im Drop-Field als File erkannt. Verschiebe ich es in eine zweite Exe-Instanz wird nur der String erkannt und das File ist verloren gegangen (siehe png-Datei).

Woran kann dies liegen?

Grüße, Philipp

philipp.hofmann 10. Sep 2020 08:17

AW: Drag&Drop mit Dateien: Files geht verloren
 
Jetzt auch mit nachvollziehbarem Beispiel :-)

KodeZwerg 10. Sep 2020 08:42

AW: Drag&Drop mit Dateien: Files geht verloren
 
Ich probiere es mal anhand des DragAndDrop example von Embarcadero nachzustellen.

Michael II 16. Sep 2020 22:56

AW: Drag&Drop mit Dateien: Files geht verloren
 
Zitat:

Zitat von philipp.hofmann (Beitrag 1473354)
Jetzt auch mit nachvollziehbarem Beispiel :-)

Nachvollziehbar, wenn man TMSirgendwas installiert hat - hab ich nicht.
Und wenn ich das Beispiel von Emba unter Win 10 (10.0.19042.508) lade ..\Documents\Embarcadero\Studio\21.0\Samples\Objec t Pascal\Multi-Device Samples\User Interface\DragAndDrop und Text oder Bild irgendwo hinziehe und fallen lasse (n möchte), dann geht's nicht. Die App reagiert danach nicht mehr auf Klicks (bleibt im Drag hängen) und muss via TM gekillt werden, da auch Delphi "nicht mehr klickbar" ist.

KodeZwerg 17. Sep 2020 07:50

AW: Drag&Drop mit Dateien: Files geht verloren
 
Also mit 10.3 läuft zwar das example bei mir, nur macht es anscheinend nichts oder ich habe nicht verstanden wie ich es zu bedienen habe.
Mir fehlt irgendwie ein drop ziel.

philipp.hofmann 17. Sep 2020 08:20

AW: Drag&Drop mit Dateien: Files geht verloren
 
Ja, ich hatte daher genau dieses Example so erweitert, dass es auch ein Drop-Ziel hat, ZIP-Anhang ein paar Kommentare weiter oben.
Damit kann man das Problem dann nachvollziehen.

Michael II 17. Sep 2020 09:08

AW: Drag&Drop mit Dateien: Files geht verloren
 
Zitat:

Zitat von philipp.hofmann (Beitrag 1473715)
Ja, ich hatte daher genau dieses Example so erweitert, dass es auch ein Drop-Ziel hat, ZIP-Anhang ein paar Kommentare weiter oben.
Damit kann man das Problem dann nachvollziehen.

Wie in #4 erwähnt: Du verwendest in deinem Beispiel TTMSFMXBitMapContainer. (Fehler beim Erzeugen von Formular: Klasse TTMSFMXBitmapContainer nicht gefunden.).

philipp.hofmann 17. Sep 2020 09:52

AW: Drag&Drop mit Dateien: Files geht verloren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Sorry, nur das vorletzte Kommentar gesehen. Anbei das Beispiel ohne die TMS-Komponente.

Michael II 17. Sep 2020 22:37

AW: Drag&Drop mit Dateien: Files geht verloren
 
Auf meinem Win Version 10.0.19042.508 ist es genau so wie du's beschreibst. (.exe auch auf 2012R2 getestet)

Beim Debuggen werden während dem DragOver massenhaft Meldungen angezeigt:

Code:
onecore\com\combase\dcomrem\resolver.cxx(2283)\combase.dll!00007FFAEB0D42AE: (caller: 00007FFAEB115FCE) ReturnHr(747) tid(13f8) 80040154 Klasse nicht registriert
onecore\com\combase\dcomrem\resolver.cxx(2491)\combase.dll!00007FFAEB115FF6: (caller: 00007FFAEB115F05) ReturnHr(748) tid(13f8) 80040154 Klasse nicht
registriert
Ich sehe nicht wo's klemmt.

Wenn du eh nur zwischen eigenen Programmen DragAndDropst [mehr kann das Delphi D&D Ding wohl eh nicht (?) - schön wäre ja Text in notepad und Co zu droppen, Files im Explorer] kannst du die File-Infos mit eigenem Protokoll via den Data Teil austauschen (?).

swestner 24. Sep 2020 22:56

AW: Drag&Drop mit Dateien: Files geht verloren
 
Das da vielleicht:

RSP-15825: IFMXDragDropService does not work with files
This is a feature that was never made to work on Windows. It is under consideration for 10.5.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz