Hallo Delphianer,
wer weiß, wie man ein Drag&Drop-Ereignis mit anderen Applikationen in Delphi 4 verarbeiten kann.
Ich möchte zum Beispiel eine Datei mit der Maus vom Explorer auf meine Applikation ziehen. Die Applikationen soll dann auf dieses Ereignis reagieren können und z.B. die genannte Datei öffnen.
Wahrscheinlich gehts mit Application.OnMessage, doch die Online-Hilfe dazu ist sehr dürftig.
Vielen Dank,
Manfred
Hallo Manfred,
versuchs mal damit:
unit ...
interface
uses ...
type ...
procedure WndProc(var Msg: TMessage); override;
var...
implementation
procedure THexEdit.WndProc(var Msg: TMessage);
var Num: Word;
Buff: Array[0..255] of Char;
N: Integer;
Pt: TPoint;
begin
if (Msg.Msg = WM\_DropFiles) then begin
Msg.Result := 0;
Num := DragQueryFile(Msg.wParam, $FFFFFFFF, NIL, 0);
For N := 0 to Num-1 do begin {falls mehrere Dateien}
DragQueryFile(Msg.wParam, n, @buff, pred(SizeOf(buff)));
if FileExists(StrPas(buff)) = True then begin
DateiName := StrPas(buff);
end;
end;
DragFinish(Msg.wParam); end
else
inherited WndProc(Msg);
end;
Gruß Dieter
Hallo Dieter,
vielen Dank für Deine Hilfe.
Wo sind DragQueryFile und DragFinish definiert; ich bekomme immer
„undefinierter Bezeichner vom Compiler“.
Folgende Implementation funktioniert bei leider nicht:
interface
Type TForm1 = class(TForm)
…
Procedure WndProc(var Msg: TMessage); override
implementation
Procedure TForm1.WndProc(var Msg: TMessage);
Begin
if Msg.Msg = WM_DropFiles then Caption:=‚DROPFILE‘
else inherited WndProc(Msg);
End;
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Manfred,
sorry, hab ich vergessen: die unit „ShellApi“ muss unter uses aufgenommen werden. Ich schick Dir mal eine Beispiel-unit per mail.
Gruß Dieter