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/)
-   -   Delphi Drag & Drop/Dock zwischen Formularen (https://www.delphipraxis.net/50190-drag-drop-dock-zwischen-formularen.html)

Cicaro 21. Jul 2005 21:03


Drag & Drop/Dock zwischen Formularen
 
Hallo ersteinmal!

Ein ganz einfaches Beispiel: Man zieht eine Datei aus dem Windows-Explorer auf den Windows Media Player. Handelt es sich um eine abspielbare Musikdatei, wird die sofort wiedergegeben.

So. Wie kann ich eine gezogene Datei gleichermaßen auf meinen Formularen empfangen ?

P.S.:
Ich hab' schon viel rumprobiert aber nichts ist dabei rausgekommen. Und irgendwann hab' ich angefangen mich im Kreis zu drehen. Es gibt ganz bestimmt eine SEHR einfache Lösung des Problems, komme aber beim besten Willen nicht drauf. :x Brauche also dringend Rat.

jfheins 21. Jul 2005 21:06

Re: Drag & Drop/Dock zwischen Formularen
 
Das sagen, dass du es erlaubst geht mit Hier im Forum suchenDragAcceptFiles, die Verarbeitung ... z.B. so ;)


Und hier ein ausführlichers Beispiel: http://www.delphipraxis.net/internal...=333236#333236

(Ja, ich bin aus Versehen auf den Absenden-Button gekommen :angel2: )

Jarmen_Kell 21. Jul 2005 21:20

Re: Drag & Drop/Dock zwischen Formularen
 
Auch da gibt es wieder eine prima Komponente vom JediProject. TJvDragDrop müsste sie heißen (grad unter Linux dran).

Nein, ich bekomme kein Geld fürs Verbreiten, ich verweise nur gerne auf die (:

emsländer 21. Jul 2005 21:48

Re: Drag & Drop/Dock zwischen Formularen
 
am einfachsten geht das hiermit (ist die "Drop Accept")

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,ShellAPI;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
  private
    procedure WMDropFiles(var Message: TWMDropFiles); message WM_DROPFILES;
  public
    { Public declarations } 
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm} 
procedure TForm1.FormCreate(Sender: TObject);
begin
   DragAcceptFiles(Self.Handle, True);
end;

procedure TForm1.WMDropFiles(var Message: TWMDropFiles);
var
  Buffer: array[0..MAX_PATH] of Char;
begin
  DragQueryFile(Message.Drop, 0, @Buffer, SizeOf(Buffer));
  Edit1.Text := Buffer; // hier Deine Verarbeitung
end;

end.
Gruss

EL

Cicaro 24. Jul 2005 12:29

Re: Drag & Drop/Dock zwischen Formularen
 
Ok. Das geht. Danke!

Aber was, wenn ich die Message WM_DROPFILES in der Fensterprozedur abfange ? Ich weiß nicht, wie ich da an die Dateinamen rankomme.
Und kann ich auch irgendwie erfahren wieviele Dateien gedropt wurden ?

emsländer 24. Jul 2005 12:37

Re: Drag & Drop/Dock zwischen Formularen
 
Zitat:

Zitat von Cicaro
Ok. Das geht. Danke!

Aber was, wenn ich die Message WM_DROPFILES in der Fensterprozedur abfange ? Ich weiß nicht, wie ich da an die Dateinamen rankomme.
Und kann ich auch irgendwie erfahren wieviele Dateien gedropt wurden ?

Delphi-Quellcode:
procedure TForm1.WMDropFiles(var Message: TWMDropFiles);
var
  Buffer: array[0..MAX_PATH] of Char;
begin
  DragQueryFile(Message.Drop, 0, @Buffer, SizeOf(Buffer));
  Edit1.Text := Buffer; // hier Deine Verarbeitung
end;
Der Dateiname steht in Edit1.text !

Wie das mit mehreren Dateinamen geht, kann ich Dir nicht sagen. Da müsste wahrscheinlich eine Modifikation an dem Code vorgenommen werden. Vielleicht kann ja Luckie mal schauen?

Gruss

EL

jfheins 24. Jul 2005 12:39

Re: Drag & Drop/Dock zwischen Formularen
 
Jetzt schau dir doch mal meinen verlinkten Beitrag von oben an, da ist alles drin. :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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 by Thomas Breitkreuz