Delphi-Forum.de Delphi-Library.de
C-Sharp-Forum.de C-Sharp-Library.de
Registrieren Login Suche Hilfe Sitemap
[WinForms] Dateien (und Ordner) per Drag 'n Drop empfangen
spacer
Autor Nachricht
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Chefentwickler

Beiträge: 17450
Erhaltene Danke: 95
Dabei seit: 07.07.2002
Wohnort: Server-Souterrain

Win 7
Delphi Prism, C# (VS 2010)
BeitragVerfasst: So 25.04.04 23:11  Antworten mit Zitat Beitrag melden
Dateien (und Ordner) per Drag 'n Drop empfangen
Um Dateien (und Ordner) per Drag 'n Drop aus dem Explorer auf eine Komponente des Programmes zu Empfangen, sind folgende Schritte notwendig:

(1) Bei der entsprechenden Komponente muss "AllowDrop" auf "true" gesetzt werden
(2) Im DragEnter-Event der Komponente ist folgender Code unterzubringen (hier am Beispiel einer Listview):

ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
procedure TMainForm.fileList_DragEnter(sender: System.Object; e: System.Windows.Forms.DragEventArgs);
begin
  if (e.Data.GetDataPresent(DataFormats.FileDrop)) then //Werden auch wirklich Dateien gezogen?
    e.Effect := DragDropEffects.Copy //Jeder Effekt ist möglich, nur nicht "None", das würde blockieren
  else
    e.Effect := DragDropEffects.None;
end;


(3) Um nun an die Dateien zu kommen, platziert man noch folgenden Code im OnDragDrop-Event (auch am Beispiel einer ListView):
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TMainForm.fileList_DragDrop(sender: System.Object; e: System.Windows.Forms.DragEventArgs);
type strArr = Array Of String//brauchen wir für den Cast
var files : strArr;
    i : Integer;
begin
  files := strArr(e.Data.GetData(DataFormats.FileDrop));
  //hier stehen jetzt alle Dateien bzw. Ordner drin, die gezogen wurden
  for i:=0 to High(files) do
  begin

    //Handelt es sich um einen Ordner?
    if (System.IO.FileAttributes.Directory
    and System.IO.File.GetAttributes(files[i])) = System.IO.FileAttributes.Directory
    then MessageBox.Show('Verzeichnis: '+files[i])
    else MessageBox.Show('Datei: '+files[i]);
  end;
end;


So fertig. Anstatt der MessageBoxes kann man natürlich nun mit den Ordner und Dateien machen, was man will.
Moderiert von jasocul: Beitrag geprüft am 05.05.2006
Meta: Drag Drop .NET Dateien Ordner

_________________
I am of peace. Always.


Zuletzt bearbeitet von Christian S. am Mo 26.04.04 22:18, insgesamt 1-mal bearbeitet
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
Beiträge vom vorherigen Thema anzeigen:   
home home