TImage Drop aus anderen Anwendung
-
Hallo...
Wie kann ich ein Bild zb. aus dem Explorer auf ein TImage in meinem Form ziehen so das es dort angezeigt wird?
C++ XE7
Vielen Dank,
Markus
-
Hallo,
mit dem Windows Explorer werden immer nur Dateinamen übertragen.
Dazu muß man auf die Windows Message WM_DROPFILES horchen:// in der Main-Form Klasse (Headerdatei) protected: void __fastcall WMDropFiles(TMessage &message); BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(WM_DROPFILES, TMessage, WMDropFiles) END_MESSAGE_MAP(TForm)
// in der Main-Form Sourcedatei void __fastcall TDropFilesForm::WMDropFiles(TMessage &message) { static char cFilename[MAXPATH]; HANDLE hDrop = (HANDLE)message.WParam; unsigned int nCount = DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0); for(unsigned int i=0; i<nCount; i++) { DragQueryFile(hDrop, i, cFilename, MAXPATH); // do something with cFilename } DragFinish(hDrop); }
Edit: im Konstruktor der Form noch folgendes einfügen
DragAcceptFiles(Handle, TRUE);
-
Danke..
funktioniert leider nicht, da Imag1 kein Handle hat.
Gruss, Markus
-
Es wird dir doch der Dateiname übergeben. Das Bild kann du doch dann mit
Image1->Picture->LoadFromFile(cFilename);
anzeigen lassen.
-
Haloo ja sowit klar nur folgendes geht nicht da es kein Handle hat.
DragAcceptFiles(Image1->Handle, TRUE);
DragAcceptFiles(Image2->handle, TRUE);lg, markus
-
DragAcceptFiles(...) will Handle vom Haupt- Form!!!
-
Hallo
habe es jetzt so gelöst das
DragAcceptFiles(Form1->Handle, true);
und bei den Image1 - Image10
ein "OnMouseEnter" Event ausglöst wird. So bekomme ich das Bild dann auch ins
richtige TImage.Vielen Dank,
Markus