AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateinamen in Edit-Feld onDragDrop

Ein Thema von kallculator · begonnen am 11. Mär 2005 · letzter Beitrag vom 12. Mär 2005
Antwort Antwort
Seite 1 von 2  1 2      
kallculator

Registriert seit: 11. Mär 2005
13 Beiträge
 
#1

Dateinamen in Edit-Feld onDragDrop

  Alt 11. Mär 2005, 02:24
Hallo allerseits,
habe mich heute zum ersten Mal in Delphi versucht und hänge jetzt bei dem Versuch, den Namen einer Datei, die ich auf das Fenster meiner Anwendung ziehe, in eine Edit-Box einzufügen.

Vereinfacht dargestellt:
Delphi-Quellcode:
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  if (Source = [eine Datei]) then
    Edit1.Text = Source.Filename;
end;
Bekäme man das irgendwie hin und muss ich für so eine Operation irgendetwas includen ("uses ...")?

Grüße
kallC
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#2

Re: Dateinamen in Edit-Feld onDragDrop

  Alt 11. Mär 2005, 03:33
Du musst Windows sagen, dass dein Programm Dateien per Drag & Drop akzeptiert. Und dann musst du deine TForm um eine Nachrichtenschleife erweitern.

Delphi-Quellcode:
type
  TForm1 = class(TForm)
  ...
  private
    { Private-Deklarationen }
    procedure WMDropFiles(var Message: TWMDropFiles); message WM_DROPFILES;
  ...
  end;
uses ShellAPI;
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Self.Handle, True);
end;
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;

end;
Wenn du mehrere Dateien auswerten willst, musst du den Rückgabewert von DragQueryFile auswerten und in einer Schleife DragQueryFile aufrufen.

Delphi-Quellcode:
procedure TForm1.WMDropFiles(var Message: TWMDropFiles);
var
  Count: Integer;
  I: Integer;
  Buffer: array[0..MAX_PATH] of Char;
begin

  Memo1.Clear;
  Count := DragQueryFile(Message.Drop, UINT(-1), nil, 0);

  for I := 0 to Count - 1 do
  begin
    DragQueryFile(Message.Drop, I, @Buffer, SizeOf(Buffer));
    Memo1.Lines.Add(Buffer);
  end;

end;
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
kallculator

Registriert seit: 11. Mär 2005
13 Beiträge
 
#3

Re: Dateinamen in Edit-Feld onDragDrop

  Alt 11. Mär 2005, 10:51
Vielen Dank für deine ausführliche Antwort!

Das ganze habe ich jetzt erst einmal für nur eine Datei eingebaut. Wenn ich "Run" klicke, werden keine Fehler angezeigt und ich bekomme meine exe-Datei. Nur passiert nichts, sobald ich eine Datei auf dem Window droppen will ("Nicht verfügbar"-Mauszeiger).
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#4

Re: Dateinamen in Edit-Feld onDragDrop

  Alt 11. Mär 2005, 18:35
Hast du auch DragAcceptFiles aufgerufen?
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
kallculator

Registriert seit: 11. Mär 2005
13 Beiträge
 
#5

Re: Dateinamen in Edit-Feld onDragDrop

  Alt 11. Mär 2005, 19:24
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Self.Handle, True);
end;
Das ist eingebaut. Muss das an eine besondere Stelle?
Vielen Dank für deine Mithilfe!
  Mit Zitat antworten Zitat
kallculator

Registriert seit: 11. Mär 2005
13 Beiträge
 
#6

Re: Dateinamen in Edit-Feld onDragDrop

  Alt 12. Mär 2005, 08:50
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
  procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    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;

end;

end.
So sieht der komplette Code aufs Wesentliche reduziert aus. Vielleicht habe ich ja schon hier einen Fehler gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Dateinamen in Edit-Feld onDragDrop

  Alt 12. Mär 2005, 09:02
Hai kallculator,

bei mir geht der Code ohne Probleme (Delphi 7).
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#8

Re: Dateinamen in Edit-Feld onDragDrop

  Alt 12. Mär 2005, 09:33
Läuft bei mir unter Windows 95 mit Delphi 3 und unter Windows XP mit Delphi 5 einwandfrei.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
kallculator

Registriert seit: 11. Mär 2005
13 Beiträge
 
#9

Re: Dateinamen in Edit-Feld onDragDrop

  Alt 12. Mär 2005, 10:52
Zitat von Sharky:
Hai kallculator,

bei mir geht der Code ohne Probleme (Delphi 7).
nur das Debuggen oder auch das Drag'n'Droppen? Egal welche Datei ich in das Fenster ziehe, es geht nicht.


Was läuft bei mir falsch? Habe Delphi Personal 7 auf Win XP (ein Visual Style dürfte ja nichts ausmachen).
Muss ich bestimmte Form Properties auswählen (BorderStyle, FormStyle, usw.)? Habe den Standard (Neu...) drin.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Dateinamen in Edit-Feld onDragDrop

  Alt 12. Mär 2005, 11:01
Zitat von kallculator:
...oder auch das Drag'n'Droppen? ...
Auch das Droppen.

Ich hänge mein Projekt mal an.
Angehängte Dateien
Dateityp: zip dragdrop_397.zip (200,0 KB, 21x aufgerufen)
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:41 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