Thema: Delphi Drag / Drop Tutorial

Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.298 Beiträge
 
Delphi 12 Athens
 
#29

Re: Drag / Drop Tutorial

  Alt 3. Jan 2008, 15:51
...so gehts auch
Delphi-Quellcode:
const
  WM_FERTIG = WM_USER + 1;

  type
  TJvFileListBox = class(JvDriveCtrls.TJvFileListBox)
  private
    ListeDateien: TStringList;
    procedure DropFiles(var Msg: TMessage); Message WM_DROPFILES;
    procedure HabeFertig(var Msg: TMessage); Message WM_FERTIG;
Delphi-Quellcode:
procedure TJvFileListBox.DropFiles(var Msg: TMessage);
var
  i, Anzahl, Size: Integer;
   SourcePfad: PChar;
begin
  ListeDateien:= TStringList.Create;
  Anzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, SourcePfad, 255);
  for i := 0 to (Anzahl - 1) do
    begin
      Size := DragQueryFile(Msg.WParam, i , nil, 0) + 1;
      SourcePfad:= StrAlloc(Size);
      DragQueryFile(Msg.WParam,i , SourcePfad, Size);
      Pfad:= ExtractFilePath(StrPas(SourcePfad));
      Dateiname:= Copy(StrPas(SourcePfad),Length(Pfad)+1,Length(StrPas(SourcePfad))- Length(Pfad));
      ListeDateien.Add(Dateiname);
      StrDispose(SourcePfad);
    end;
  DragFinish(Msg.WParam);
  PostMessage(Handle, WM_FERTIG, 0, 0);
end;

procedure TJvFileListBox.HabeFertig(var Msg: TMessage);
var
  i: Integer;
begin
  SetForegroundWindow(FAnlagenkomponenten.Handle);
  if BestatigungK then
      begin
        if MessageDlg('Kopieren von ' + IntToStr(ListeDateien.Count) + ' Dateien nach ' + FAnlagenkomponenten.DocVerzeichnis.Text + ' ?',
              mtConfirmation, [mbYes, mbNo], 0) = mrNo then
          begin
            exit;
          end;
      end;
  for i := 0 to ListeDateien.Count -1 do
    begin
      Dateiname:= ListeDateien.Strings[i];
      CopyFile(PChar(Pfad + Dateiname),PChar(FAnlagenkomponenten.DocVerzeichnis.Text + '\'+ Dateiname),false);
    end;
  FAnlagenkomponenten.JvFileListBox1.Update;
  ListeDateien.Free;
end;
... wieder was neues gelernt
  Mit Zitat antworten Zitat