![]() |
Drag&Drop von Dateien aus Explorer
Hallo liebe DP'ler!
Ich stehe gerade vor einem seltsamen Problem. Ich habe folgenden Code (gekürzt):
Delphi-Quellcode:
Dieser Code sollte eigentlich alle Dateien mit ihrem Dateinamen in meine ListBox (files) eintragen, macht er aber nicht. Er ruft nicht mal WMDROPFILES auf.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ID3V2, ShellApi, StdCtrls; type TForm1 = class(TForm) files: TListBox; procedure FormCreate(Sender: TObject); private { Private declarations } procedure WMDROPFILES(var Msg: TMessage); message WM_DROPFILES; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WMDROPFILES(var Msg: TMessage); var i, anzahl, size: integer; Dateiname: PChar; begin inherited; Dateiname := ''; anzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, Dateiname, 255); for i := 0 to (anzahl - 1) do begin size := DragQueryFile(Msg.WParam, i , nil, 0) + 1; Dateiname:= StrAlloc(size); DragQueryFile(Msg.WParam, i, Dateiname, size); files.Items.Add(Dateiname); StrDispose(Dateiname); end; DragFinish(Msg.WParam); end; procedure TForm1.FormCreate(Sender: TObject); begin DragAcceptFiles(Form1.Handle, true); end; end. Das seltsame daran: Ich bin mir sicher, dass ich exakt diesen Code schon mal in einem anderen Programm zum laufen bekommen habe (habe es halt jetzt nurdort rauskopiert) Ich hoffe ihr könnt mir helfen. Flare |
Re: Drag&Drop von Dateien aus Explorer
|
Re: Drag&Drop von Dateien aus Explorer
|
Re: Drag&Drop von Dateien aus Explorer
ich habe mal von einer weile ein beispiel geschrieben - siehe hier:
![]() |
Re: Drag&Drop von Dateien aus Explorer
Danke für die Antworten.
Ich habe mich bis jetzt nur mit xaromz Komponente auseinandergesetzt und es funktioniert ebenfalls nicht. Das ist, was ich habe:
Delphi-Quellcode:
In ShellDropper1 ist Files als Control eingetragen und Enabled ist auch True aber er macht dennoch nix. Es wird einfach keine Methode von ShellDropper1 aufgerufen. Wenn ich mit meinen Dateien über die ListBox fahre, bleibt auch der Cursor so, dass er mir signalisiert, dass ich dort nix ablegen darf.
procedure TForm1.ShellDropper1Drop(Sender: TObject; const DropRec: TDropRec);
var i: integer; begin for i := 0 to DropRec.Files.Count - 1 do begin Files.Items.Add(DropRec.Files.Strings[i]); end; end; Muss man da irgendwie noch mehr einstellen? In dem Post wo xaromz die Komponente vorgestellt hat, wurde ja auch nur eine sehr spärliche Erklärung dazu geliefert (wobei die eigentlich reichen müsste). Flare //Edit: Dürfte eigentlich nicht ausschlaggebend sein, aber kann es sein, dass es an Vista liegt, dass mein Code nicht klappt? Wäre dann nur die Frage, warum es mit meinem anderen Programm klappt. |
Re: Drag&Drop von Dateien aus Explorer
Wie sieht denn der Cursor aus wenn du Dateien auf dein Form ziehst? Ist deine Form eventuell von einem Panel etc. verdeckt so das man nichts mehr direkt auf das Form ablegen kann? Der Quelltext von dir sollte an sich funktionieren. Einziger Haken ist das du bereits im OnCreate das DropFiles erlaubst und danach teilweise sich das Handle noch ändert.
Achja, du schreibst das sich der Cursor nicht ändert wenn du eine Datei auf deine Listbox ziehst. Das ist auch klar denn du machst das ganze ja für das Formular und nicht für die Listbox. |
Re: Drag&Drop von Dateien aus Explorer
Zitat:
Zitat:
Zitat:
Flare |
Re: Drag&Drop von Dateien aus Explorer
ob es im OnCreate funktioniert hängt davon ab ob das Form danach nochmal ein neues Handle bekommt (durch setzen des FormStyle etc.). Du könntest noch versuchen das ganze probehalber in ein ButtonClick zu setzen.
Ansonsten würde ich vermuten das Vista da wieder was anders macht. |
Re: Drag&Drop von Dateien aus Explorer
Habe es jetzt auf nen ButtonClick gesetzt, selbes Ergebnis.
Ich lasse es jetzt erstmal mit dem Versuch unter Vista das zum laufen zu bekommen :wall: Trotzdem ein großes Danke an euch 4! Flare |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:19 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