![]() |
Delphi-Version: 10 Seattle
Drag-and-Drop auf Frame-Komponente realisieren
Hi.
Ich brauche in einem meiner Frames eine Drag-And-Drop Lösung, die mir ausschließlich den Pfad der "gedropten" Anwendung ausspuckt, damit ich diese anschließend im Grid verarbeiten lassen kann. Leider funktioniert das einfach nicht. Auf einer normalen "Form" klappt das wunderbar, auf dem Frame wird mir immer das Verbotszeichen angezeigt wenn ich den Drop versuche. Der Code der auf der Form funktioniert hat steht jetzt im Frame:
Delphi-Quellcode:
... funktioniert aber nicht.
constructor TFrame1.Create(AOwner: TComponent);
begin inherited; DragAcceptFiles(Handle,True); end; procedure TFrame1.WMDROPFILES(var msg: TWMDropFiles); const MAXFILENAME = 255; var cnt, fileCount : integer; fileName : array [0..MAXFILENAME] of char; begin // how many files dropped? fileCount := DragQueryFile(msg.Drop, $FFFFFFFF, fileName, MAXFILENAME) ; // query for file names for cnt := 0 to -1 + fileCount do begin DragQueryFile(msg.Drop, cnt, fileName, MAXFILENAME) ; //do something with the file(s) memo1.Lines.Insert(0, fileName) ; end; //release memory DragFinish(msg.Drop) ; end; Jemand eine Ahnung? Google hat mir bisher auch nicht wirklich geholfen.:| |
AW: Drag-and-Drop auf Frame-Komponente realisieren
Das DragAcceptFiles im Frame-Create kannst du weglassen. Das Form muss weiterhin das DropFiles übernehmen, kann aber die Message einfach an das Frame weiterreichen. Die Methode im Frame muss dann auch kein Message-Handler mehr sein.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin DragAcceptFiles(Handle,True); end; procedure TForm1.WMDROPFILES(var Message: TWMDropFiles); begin MyFrame1.HandleDropFiles(Message); end; procedure TMyFrame.HandleDropFiles(var Message: TWMDropFiles); const MAXFILENAME = 255; var cnt, fileCount : integer; fileName : array [0..MAXFILENAME] of char; begin // how many files dropped? fileCount := DragQueryFile(Message.Drop, $FFFFFFFF, fileName, MAXFILENAME) ; // query for file names for cnt := 0 to -1 + fileCount do begin DragQueryFile(Message.Drop, cnt, fileName, MAXFILENAME) ; //do something with the file(s) memo1.Lines.Insert(0, fileName) ; end; //release memory DragFinish(Message.Drop) ; end; |
AW: Drag-and-Drop auf Frame-Komponente realisieren
Zitat:
Hab das jetzt auch ziemlich genau so gelöst. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 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