![]() |
Problem mit Drag/Drop
Hallo Leute,
sicher wird es den einen oder anderen nun etwas nerven, das diese Thema mal wieder auftaucht, aber ich habe schon wirklich viel versucht und bekomme es nicht geregelt. Ich möchte einfach, dass mein Editor eine neue Page created und dort das File, welches über Drag und Drop ankommt läd. Das Problem ist, dass das File (oder die Pfadangabe dessen) gar nicht erst ankommt. Folgendes habe ich gemacht. Units shellapi ist eingetragen Procedure ist implementiert:
Delphi-Quellcode:
und im FormCreate dieses hier noch:
private
{ Private-Deklarationen } procedure WMDROPFILE(var msg: TMessage); procedure GetDroppedFileNames(var msg : TWMDropFiles); public procedure TForm1.WMDROPFILE(var msg: TMessage); var hDrop : Cardinal ; fName : array[0..MAX_PATH] of Char ; begin hDrop := Msg.WParam ; fName := '' ; DragQueryFile(hDrop, 0, fName, MAX_PATH); ShowMessage(String(fName)); DragFinish (hDrop); end; procedure TForm1.GetDroppedFileNames(var msg : TWMDropFiles); var sFileName : string; dwFileCount : cardinal; i : cardinal; dwReqdLength : cardinal; begin ShowMessage('Drop kommt an'); // Anzahl der per Drag 'n' Drop übergebenen Dateipfade // Hier sollte es nur eine sein, bei mehreren würde nur // die letzte Datei im SynEdit Fenster stehenbleiben dwFileCount := DragQueryFile(msg.Drop,$FFFFFFFF,nil,0); for i := 0 to dwFileCount - 1 do begin // Pfadlänge ermitteln dwReqdLength := DragQueryFile(msg.Drop,i,nil,1); // Dateinamen abfragen sFileName := StringOfChar(#00,dwReqdLength+1); DragQueryFile(msg.Drop,i,PChar(sFileName),dwReqdLength+1); // Datei laden NewPage(sFileName); ShowMessage(sFileName); //SynEdit1.Lines.LoadFromFile(sFileName); StatusBar1.Panels[2].Text:=(sFileName); end; end;
Delphi-Quellcode:
Diese 2 Proceduren habe ich schon probiert. In einem anderen meiner Programme laufen sie einwandfrei, aber in diesem Fall nicht. Wie Ihr seht, habe ich in die jeweiligen proceduren schon mal eine ShowMessage eingebaut, nur um zu sehen ob denn was ankommt. Die messagebox wird nicht einmal aufgerufen. Das heisst doch, dass die procedure nicht aufgerufen wird. Aber warum nicht ???
DragAcceptFiles(self.Handle,true);
Danke Tom |
Re: Problem mit Drag/Drop
Hallo,
wie wäre es mit
Delphi-Quellcode:
Wenn die Message so heißt. Habe ich z.Z. nicht im Kopf
procedure GetDroppedFileNames(var msg : TWMDropFiles); message WM_DROPFILES;
|
Re: Problem mit Drag/Drop
Hallo Jens,
genau das war das Problem. Bei der Bekanntmachung musste der kleine Codefetzen noch hin. Bei der Procedure hingegen darf man ihn nicht hinschreiben. Warum auch immer, jetzt funktioniert es prächtig. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:44 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