hallo
... ich hab schon befürchtet, dass ich mich ein wenig undeutlich ausgedrückt habe
.
löschen der temporären dateien:
war anscheinend mein fehler, hab nicht gesehen wo diese als ftTemporary gekennzeichneten Files wieder gelöscht werden. sorry
weiter zu FillObjects:
Zitat:
Die Methode FillObjects wird in DragEnter immer ausgeführt.
hier muss ich aber widersprechen
. wie man im nachfolgenden code auszug sieht, wird fillobjects nur ausgeführt, wenn man in seiner shelldropper komponente OnDragEnter verwendet. arbeitet man zB nur mit OnDrop wird hier FillObjects nicht ausgeführt!
Delphi-Quellcode:
if FAccepted then
begin
if Assigned(FOnDragEnter) then
begin
FillObjects(dataObj, dsEnter);
PrepareRec(pt, grfKeyState);
FOnDragEnter(FControl, FDropRec, FAccepted);
end;
end;
Zitat:
Das Problem ist ja, dass Thunderbird den Inhalt der Datei erst schreibt, nachdem die Drop-Nachricht abgearbeitet wurde (lässt sich schön mit einem Breakpoint am Ende von "Drop" zeigen).
RICHTIG. und genau deswegen lasse ich fillobjects AUF JEDEN FALL im DragEnter ausführen damit Thunderbird die Datei vorm Drop noch befüllen kann. und wie gesagt, jetzt funzts mit Thunderbird, OutlookExpress und Outlook 2000.
im DragEnter:
Delphi-Quellcode:
...
if FAccepted then
begin
FillObjects(dataObj, dsEnter);
if Assigned(FOnDragEnter) then
begin
//FillObjects(dataObj, dsEnter);
PrepareRec(pt, grfKeyState);
FOnDragEnter(FControl, FDropRec, FAccepted);
end;
end;
...
im Drop:
Delphi-Quellcode:
...
FDropped := True;
if FAccepted then
begin
if Assigned(FOnDrop) then
begin
if FIsFileGroup then
FillObjects(dataObj, dsDrop);
PrepareRec(pt, grfKeyState);
FOnDrop(FControl, FDropRec);
end;
dwEffect := GetCursor;
end else
dwEffect := DROPEFFECT_NONE;
...
hoffe ich konnte mich dieses mal verständlich machen