![]() |
.txt Datei in ein TMemo ziehen (drap&drop)
Ich komme leider nicht mehr weiter und habe dazu nichts gefunden. Möchte gerne z.b. eine auf dem Desktop sich befindente .txt Datei mit der Maus in mein TMemo reinziehen, so das die Datei dann im Memo angezeigt wird.
Verwende diesen Code:
Delphi-Quellcode:
Eigentlich galt der für ne ListBox, daher mein Versuch mit dem Memo, doch leider passiert nach dem drap&drop garnichts. Wäre für Hilfe oder verbesserungen/aufklärung sehr sehr dankbar!
private
procedure WMDROPFILES(var Msg: TMessage); Message WM_DROPFILES; procedure TForm1.WMDROPFILES(var Msg: TMessage); var i, Counts, Size: Integer; PCharFileName: PChar; begin inherited; PCharFileName:=nil; Counts:=DragQueryFile(Msg.WParam, $FFFFFFFF, PCharFileName, 255); for i:=0 to Counts - 1 do begin Size:=DragQueryFile(Msg.WParam, i, nil, 0) + 1; PCharFileName:=StrAlloc(Size); DragQueryFile(Msg.WParam, i, PCharFileName, Size); Memo1.Lines.Add(String(PCharFileName)); StrDispose(PCharFileName); end; DragFinish(Msg.WParam); end; procedure TForm1.FormCreate(Sender: TObject); begin DragAcceptFiles(Memo1.Handle, True); end; |
AW: .txt Datei in ein TMemo ziehen (drap&drop)
Hallo,
Du kannst es mal so versuchen:
Delphi-Quellcode:
Gruß
uses
ShellApi; procedure TForm1.WMDropFiles (var Msg : TMessage); var s, w : Integer; q : PChar; p : TPoint; begin w := Msg.WParam; try DragQueryPoint (w, p); if not PtInRect (Memo1.ClientRect, Memo1.ScreenToClient (ClientToScreen (p))) then Exit; if DragQueryFile (w, $FFFFFFFF, nil, 0) <> 1 then begin // Deine Fehlerbehandlung, wenn mehr als eine Datei gedroppt wird Exit end; s := DragQueryFile (w, 0, nil, 0) + 1; try q := StrAlloc (s) except // Deine Fehlerbehandlung, wenn kein Speicher alloziert werden konnte Exit end; DragQueryFile (w, 0, q, s); Memo1.Lines.LoadFromFile (q); StrDispose (q) finally DragFinish (w) end end; procedure TForm1.FormCreate(Sender: TObject); begin DragAcceptFiles (Handle, True) // Handle des Forms! end; procedure TForm1.FormDestroy(Sender: TObject); begin DragAcceptFiles (Handle, False) end; |
AW: .txt Datei in ein TMemo ziehen (drap&drop)
Der entscheidende Unterschied ist, dass du das Handle des Formulars benutzt. Denn wenn man das des Memos benutzt, muss man die Nachricht auch in der Klasse des Memos abfangen oder dessen WndProc umbiegen. Im Formular kommt die Message dann gar nicht an, weshalb auch der erste Quelltext nicht funktionieren wird.
|
AW: .txt Datei in ein TMemo ziehen (drap&drop)
Danke Danke, ich glaub jetzt hab ichs verstanden :-D
Noch eine kurze Frage, wie kann man jetzt bestimmen das man nur .txt dateientypen reinziehen kann und keine anderen ? |
AW: .txt Datei in ein TMemo ziehen (drap&drop)
Könntest du bitte deinen ersten Beitrag bearbeiten und um den Quelltext die
Code:
Tags setzen?
[DELPHI][/DELPHI]
|
AW: .txt Datei in ein TMemo ziehen (drap&drop)
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz