Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.236 Beiträge
 
Delphi 12 Athens
 
#11

AW: Drag&Drop Outlook

  Alt 9. Mär 2020, 18:19
Wir nutzen die DropMaster-Komponente von Rize.

Delphi-Quellcode:
procedure TMyDragSource.ExecuteFileDrag(FileSaveName, AlternateFileName: array of string);
var
  SL: TStringList;
  i: Integer;
  Data: AnsiString;
begin
  SL := TStringList.Create;
  try
    CustomFormatData.Clear;
    for i := 0 to High(FileSaveName) do
      if (i <= High(AlternateFileName)) and (AlternateFileName[i] <> '') then
        SL.Add(ExtractFileName(AlternateFileName[i]))
      else
        SL.Add(ExtractFileName(FileSaveName[i]));
    CustomFormatData.AddFormat(DMFileGroupDescriptorFormatName, FileGroupDescriptorFromFileList('', SL));
    for i := 0 to High(FileSaveName) do begin
      with TFileStream.Create(FileSaveName[i], fmOpenRead or fmShareDenyWrite) do
        try
          SetLength(Data, Size);
          if Data <> 'then
            ReadBuffer(Data[1], Size);
        finally
          Free;
        end;
      CustomFormatData.AddFormatEx('FileContents', Data, TYMED_HGLOBAL, i);
      CustomFormatData.Items[CustomFormatData.Count - 1].AllowTrailingNull := False;
    end;
    Execute;
  finally
    SL.Free;
  end;
end;
Dafür hatte ich mir mal eine Prozedur geschieben, um den Drag-Vorgang zu initialisieren.

Das Drag und Drop der WinAPI kennt mehrere Modi, einmal Dateiname als Quelle und anderseits ein Stream als Quelle, mit zusätzlichem Namen.
Das Prinzip sollte sich auch mit anderen D&D-Komponenten umsetzen lassen.


Mein einziges Problem war, dass das Drag&Drop der VCL nicht mit dem des Windows kompatibel sind und ich nicht gleichzeitig in einer Gridkomponente Zeilen per Delphi-Drag&Drop umsortieren kann und gleichzeitig das auch als Drag-Quelle nach Extern nutzen kann.
Als Drop-Ziel ist beides zusammen möglich.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat