سحب واسقاط الملفات الى برنامجك
#1
السلام عليكم ورحمة الله وبركاته

اخواني الاعزاء هذه شيفرة تستطيع من خلالها ان تقوم بسحب اي ملف من خارج البرنامج واسقاطه الى نافذة البرنامج فيقوم بعرض اسم ومسار الملف الذي قمت بسحبه
كود :
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;
مع تحياتي الى كل المشرفين على هذا الموقع الجميل


الملفات المرفقة
.rar   dropfile.rar (الحجم : 2.53 ك ب / التحميلات : 602)
[-] كل من 2 users say قال شكرا ل ضيف على المشاركة المفيدة
  • mohamed49, sathex
الرد
#2
السلام عليكم

ربما يتسأل البعض مااستفيد من سحب واسقاط الملف الى برنامج اليكم هذه التجربة وهي تقوم بعرض ملف صورة في حال قمت بسحب الصورة الى داخل نافذة البرنامج
كود :
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;
والسلام ختام


الملفات المرفقة
.rar   ImageDrop.rar (الحجم : 2.69 ك ب / التحميلات : 351)
الرد
#3
وعليكم السلام ورحمة الله وبركاته
مثال جميل أخي ramijz
وإن كان سبقك إليه غيرك Smile
في انتظار المزيد من الجديد، بالتوفيق.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#4
وعليكم السلام اخ kachwashed

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


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم