1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79:
| unit UMemo;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, StdCtrls, ComCtrls, DesignIntf, shellAPI, RTLConsts, Dialogs, CoolTrayIcon, Menus;
type TForm1 = class(TForm) Memo1: TMemo; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private procedure AddFile(dateiname: String); procedure WindowProc(var Nachricht: TMessage); Message WM_DROPFILES; procedure WMDROPFILES(var Msg: TMessage); { Private-Deklarationen } public { Public-Deklarationen } end;
var Form1: TForm1; OldWindowProc: TWndMethod;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject); begin OldWindowProc := Memo1.WindowProc; Memo1.WindowProc := WindowProc; DragAcceptFiles(Memo1.Handle, true); end;
procedure TForm1.FormDestroy(Sender: TObject); begin Memo1.WindowProc := OldWindowProc; end;
procedure TForm1.AddFile(dateiname: String); begin Memo1.Lines.LoadFromFile(dateiname); end;
procedure TForm1.WindowProc(var Nachricht: TMessage); begin if Nachricht.Msg = WM_DROPFILES then begin WMDROPFILES(Nachricht); OldWindowProc(Nachricht); end; end;
procedure TForm1.WMDROPFILES(var Msg: TMessage); var dateiname: PChar; i, groesse, anzahl: Integer; begin dateiname := ''; anzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, dateiname, 255); for i := 0 to anzahl - 1 do begin groesse := DragQueryFile(Msg.WParam, i, nil, 0) + 1; dateiname := StrAlloc(groesse); DragQueryFile(Msg.WParam, i, dateiname, groesse); if FileExists(dateiname) then begin AddFile(dateiname); end; StrDispose(dateiname); end; DragFinish(Msg.WParam); end;
end. |