Einzelnen Beitrag anzeigen

Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Drag n Drop problem

  Alt 16. Jan 2008, 14:59
Hallo

Kleines exemplarisches Beispiel für Datei Drag&Drop.
Also Im Explorer Dateien markieren und mit der Maus in unsere Applikation Ziehen ...
Hier wird dann eine Listbox mit den Namen gefüllt....


Delphi-Quellcode:
type
  TForm1 = class(TForm)
    ...
    Listbox1 ...
    ...
  private
    ...
    procedure WMDropFiles(VAR Msg:TWMDROPFILES); MESSAGE WM_DROPFILES;
  public
    ...
  end;

Function fctWMDropFiles { >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> }
         (hDrop:tHandle;j:TStrings):integer;
var
  i1:integer;
  i2:integer;
  z1:ARRAY[0..255] of Char;
begin
  // local init
  Result := 0;
  i1 := 0;
  i2 := 0;
  FillChar(z1,SizeOf(z1),0);
  // local exit
  if not assigned(j) then exit;
  // local main

  // Ziel-Liste leeren
  j.Clear;

  // Anzahl Dateinamen
  i1 := DragQueryFile(hDrop,LongWord(-1), nil, 0);

  // Alle Dateinamen in Schleife holen
  for i2 := 0 to i1-1 do
    begin
      // Namen holen nach z1
      FillChar(z1,SizeOf(z1),0);
      DragQueryFile(hDrop,i2,z1,SizeOf(z1)-1);
      // Name in Zielliste speichern
      if (StrPas(z1)<>'') then
        begin
          j.Add(StrPas(z1));
        end;
    end;
  DragFinish(hDrop);
  fctWMDropFiles := i2+1;
end; { <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< }


procedure TForm1.FormCreate(Sender: TObject);
begin
  ...
  { FileManager Dragging }
  DragAcceptFiles(Handle,True);
  ...
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  ...
  { FileManager Dragging }
  DragAcceptFiles(Handle,False);
  ...
end;

procedure TForm1.WMDropFiles(VAR Msg:TWMDROPFILES);
begin
  fctWmDropFiles(Msg.Drop,ListBox1.Items);
end;
Peter Schaible
  Mit Zitat antworten Zitat