delphi4arab منتديات دلفي للعرب

نسخة كاملة : سحب واسقاط الملفات الى برنامجك
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .

ramijz

السلام عليكم ورحمة الله وبركاته

اخواني الاعزاء هذه شيفرة تستطيع من خلالها ان تقوم بسحب اي ملف من خارج البرنامج واسقاطه الى نافذة البرنامج فيقوم بعرض اسم ومسار الملف الذي قمت بسحبه
كود :
procedure TForm1.AcceptFiles( var msg : TMessage ); const cnMaxFileNameLen = 255; var i, nCount : integer; acFileName : array [0..cnMaxFileNameLen] of char; begin nCount := DragQueryFile( msg.WParam, $FFFFFFFF, acFileName, cnMaxFileNameLen ); for i := 0 to nCount-1 do begin DragQueryFile( msg.WParam, i, acFileName, cnMaxFileNameLen ); Edit1.Text:=acFileName; end; DragFinish( msg.WParam ); end; procedure TForm1.FormCreate(Sender: TObject); begin DragAcceptFiles( Handle, True ); end;
مع تحياتي الى كل المشرفين على هذا الموقع الجميل

ramijz

السلام عليكم

ربما يتسأل البعض مااستفيد من سحب واسقاط الملف الى برنامج اليكم هذه التجربة وهي تقوم بعرض ملف صورة في حال قمت بسحب الصورة الى داخل نافذة البرنامج
كود :
uses ShellApi; procedure TForm1.FormCreate(Sender: TObject); begin originalPanelWindowProc := Panel1.WindowProc; Panel1.WindowProc := PanelWindowProc; DragAcceptFiles(Panel1.Handle,true); end; procedure TForm1.PanelWindowProc(var Msg: TMessage); begin if Msg.Msg = WM_DROPFILES then PanelImageDrop(TWMDROPFILES(Msg)) else originalPanelWindowProc(Msg); end; procedure TForm1.PanelImageDrop(var Msg: TWMDROPFILES); var numFiles : longInt; buffer : array[0..MAX_PATH] of char; begin numFiles := DragQueryFile(Msg.Drop, $FFFFFFFF, nil, 0); if numFiles > 1 then begin ShowMessage('You can drop only one image file at a time!'); end else begin DragQueryFile(Msg.Drop, 0, @buffer, sizeof(buffer)); try Image1.Picture.LoadFromFile(buffer); except on EInvalidGraphic do ShowMessage('Unsupported image file, or not an image!'); end; end; end;
والسلام ختام
وعليكم السلام ورحمة الله وبركاته
مثال جميل أخي ramijz
وإن كان سبقك إليه غيرك Smile
في انتظار المزيد من الجديد، بالتوفيق.

ramijz

وعليكم السلام اخ kachwashed

قمت بالبحث بالموقع عن السحب والاسقاط ولكنني يبدو لم ابحث بشكل جيد ففكرت ان اقوم بوضع هذه التجربة وهي ليست لي بل من مقالة اجنبية .
شكرا اخي ramijz على الكود الذي يمكننا من خلال اضافته الى برنامجنا المصمم بالدلفي بان نقوم بسحب واسقاط اي ملف الى الملف.
نتمنى منك المزيد يا غالي ولك مني كل الشكر والتقدير.
شكرآ لك أخي على الكود الرائع
وأعتقد إن الكود له فوائد وإستخدامات عديده
ومن بينهم ومن أهمها هي تسهيل عمليه الفتح لبعض الملفات
شكرآ مرة أخرى
نعم كود جميل ويستخدم دائماً في مشاريع الملتميديا
اشكرك ...
شكرا جزيلا ولكن هل لي في سؤال إذا أردت البرنامج أن يقبل نوع من الملفات مثل .exe
فماذا أفعل ؟
كحل سريع، قم بفحص لاحقة الملف:
كود :
DragQueryFile( msg.WParam, i, acFileName, cnMaxFileNameLen ); if SameText(ExtractFileExt(acFileName), '.exe') then Edit1.Text:=acFileName;
والأفضل قراءة رأس الملف:
كود :
http://www.delphidabbler.com/articles?article=8
بالتوفيق.