AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Drag&Drop von Dateien aus Explorer
Thema durchsuchen
Ansicht
Themen-Optionen

Drag&Drop von Dateien aus Explorer

Ein Thema von Flare · begonnen am 29. Jan 2007 · letzter Beitrag vom 29. Jan 2007
Antwort Antwort
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#1

Drag&Drop von Dateien aus Explorer

  Alt 29. Jan 2007, 18:00
Hallo liebe DP'ler!

Ich stehe gerade vor einem seltsamen Problem.

Ich habe folgenden Code (gekürzt):
Delphi-Quellcode:
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.
Dieser Code sollte eigentlich alle Dateien mit ihrem Dateinamen in meine ListBox (files) eintragen, macht er aber nicht. Er ruft nicht mal WMDROPFILES auf.

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
Willy Scheibel
  Mit Zitat antworten Zitat
Trödel

Registriert seit: 9. Mai 2006
Ort: Berlin
23 Beiträge
 
#2

Re: Drag&Drop von Dateien aus Explorer

  Alt 29. Jan 2007, 18:07
Versuch es mal damit:
OnFileDrop
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: Drag&Drop von Dateien aus Explorer

  Alt 29. Jan 2007, 18:49
Hallo,

oder meinen ShellDropper.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Drag&Drop von Dateien aus Explorer

  Alt 29. Jan 2007, 19:28
ich habe mal von einer weile ein beispiel geschrieben - siehe hier: http://www.hassmann-software.de/content/view/121/42/
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#5

Re: Drag&Drop von Dateien aus Explorer

  Alt 29. Jan 2007, 19:45
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:
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;
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.

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.
Willy Scheibel
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Drag&Drop von Dateien aus Explorer

  Alt 29. Jan 2007, 19:48
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#7

Re: Drag&Drop von Dateien aus Explorer

  Alt 29. Jan 2007, 19:52
Zitat von SirThornberry:
Wie sieht denn der Cursor aus wenn du Dateien auf dein Form ziehst?
Es ist der bekannte durchgestrichene Kreis, der signalisieren soll, dass man dort nix ablegen kann.

Zitat von SirThornberry:
Ist deine Form eventuell von einem Panel etc. verdeckt so das man nichts mehr direkt auf das Form ablegen kann?
Nein, es ist auf der Form nur eine ListBox, 4 Buttons, ein Label und 3 Radio-Buttons und die überlagern sich keinesfalls.

Zitat von SirThornberry:
Einziger Haken ist das du bereits im OnCreate das DropFiles erlaubst und danach teilweise sich das Handle noch ändert.
Wo soll ich es dann hinsetzen? Bei meinem anderen Programm habe ich es auch exakt an dieser Stelle und dort funktioniert es einwandfrei.


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Drag&Drop von Dateien aus Explorer

  Alt 29. Jan 2007, 20:08
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#9

Re: Drag&Drop von Dateien aus Explorer

  Alt 29. Jan 2007, 20:12
Habe es jetzt auf nen ButtonClick gesetzt, selbes Ergebnis.
Ich lasse es jetzt erstmal mit dem Versuch unter Vista das zum laufen zu bekommen
Trotzdem ein großes Danke an euch 4!


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:17 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