![]() |
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. |
Re: Drag & Drop/Dock zwischen Formularen
Das sagen, dass du es erlaubst geht mit
![]() ![]() Und hier ein ausführlichers Beispiel: ![]() (Ja, ich bin aus Versehen auf den Absenden-Button gekommen :angel2: ) |
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 (: |
Re: Drag & Drop/Dock zwischen Formularen
am einfachsten geht das hiermit (ist die "Drop Accept")
Delphi-Quellcode:
Gruss
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. EL |
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 ? |
Re: Drag & Drop/Dock zwischen Formularen
Zitat:
Delphi-Quellcode:
Der Dateiname steht in Edit1.text !
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; 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 |
Re: Drag & Drop/Dock zwischen Formularen
Jetzt schau dir doch mal
![]() |
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