FileOpenDialog | دالة فتح مستعرض الملفات
.: الصيغة الاساسية للدالة :.
PHP:
FileOpenDialog ( "title", "init dir", "filter" [, options [, "default name" [, hwnd]]] )
هناك ثلاث وسيطات اجبارية وثلاث اخرى اختيارية
الاجبارية
title = عنوان النافذة
int dir = اول مجلد يظهر في نافذة فتح الملفات
filter = صيغ الملفات المراد فتحها
الاختيارية
option = خيارات اضافية وهي 4 خيارات ( 1 , 2 ,4 ,8 ) >> شرح الخيارات في الاسفل
default name = اسم الملف الافتراضي .. يكون مكتوب في خانة اسم الملف >> القيمة الافتراضية لهذه الوسيطة = "" >> فراغ
hwnd = متغير يشير الى النافذة الرئيسية لبرنامجك .. >> سيتم توضيحه في الاسفل
=====
الاجبارية
title = عنوان النافذة
راجع رقم 1 في الصورة أول المشاركة
PHP:
FileOpenDialog ( "File Open", @DesktopDir, "Text Files(*.txt)" )
ركز على خانة الـ
title والباقي بعد شوي
النتيجة
==
int dir = اول مجلد يظهر في نافذة فتح الملفات
راجع رقم 2 في الصورة أول المشاركة
مثال لجعل اول مجلد هو سطح المكتب
PHP:
FileOpenDialog ( "File Open", @DesktopDir, "Text Files(*.txt)" )
ركز على خانة الـ
int dir والباقي بعد شوي
اذا جربت الكود راح تلاحظ ان اول مجلد ظهر لك هو سطح المكتب
==
filter = صيغ الملفات المراد فتحها
راجع رقم 3 في الصورة أول المشاركة
هذه الوسيطة تقوم باختيار صيغة معينة للملفات المراد فتحها او اختيارها
مثل .txt للملفات النصية | أو.exe للملفات الدفعية ( التطبيقات ) أو *.* لجميع الملفات أو .. الخ
طريقة الكتابة هي كالتالي
تكتب اولا توضيح لصيغة الملفات .. وهي هنا Text Files
ثم تكتب الصيغة بين () وبعد * .. وهي هنا (*.txt)
وطبعا لاتنسى ان كل هالصيغة تكتب بين ""
مثال
PHP:
FileOpenDialog ( "File Open", @DesktopDir, "Text Files(*.txt)" )
طيب لو اردنا ان نضيف اكثر من صيغة مثلا .jpg و .png و و و .. الخ
نكتب نفس الصيغة ونفصل بين كل واحد منهما بعلامة ;
مثال
PHP:
FileOpenDialog ( "File Open", @DesktopDir, "Images(*.jpg;*.png;*.gif;*.bmp)" )
طيب لو اردنا ان نكتبها في قائمة منسدلة كهذه
نقوم بتكرار الصيغة مرة اخرى ونفصل بينها بـعلامة
|
مثال
PHP:
FileOpenDialog ( "File Open", @DesktopDir, "Images(*.jpg;*.png;*.gif;*.bmp) | Sounds(*.mp3;*.wav)" )
وايضا لو اردنا :d: ان نقوم بـعرض جميع الصيغ فسنحتاج لهذه الصيغة *.*
مثال
PHP:
FileOpenDialog ( "File Open", @DesktopDir, "All Files(*.*)" )
==
الاختيارية
option = خيارات اضافية وهي 4 خيارات ( 1 , 2 ,4 ,8 ) >> شرح الخيارات في الاسفل
1
يجب عليك ان تختار ملف موجود ولو كتبت مسار ملف غير موجود في خانة اسم الملف ..
في باقي الخيارات سيتجاهل وستذهب النافذة ولكن الان ستظهر رسالة الخطا هذه
_________
2
تقريبا نفس عمل
1 وهي تتعلق باظهار رسالة خطا اذا كان المسار غير موجود
_________
4
تمكنك من تحديد أكثر من ملف في نفس الوقت
_________
8
لو كتب المستخدم مسار خاطئ في خانة < اسم الملف > سيتم التجاهل الا اذا كنت حددت خيار
1 او
2 او
8
في
1 او
2 ستظهر رسالة خطا
اما في
8 فستظهر هذه الرسالةة
==
default name = اسم الملف الافتراضي .. يكون مكتوب في خانة اسم الملف >> القيمة الافتراضية لهذه الوسيطة "" >> فراغ
راجع رقم 5 في الصورة أول المشاركة
مثال لو كتبنا هذا الاسم في خانة الـ
default name
PHP:
FileOpenDialog ( "File Open", @DesktopDir, "All Files(*.*)" ,4,"Ali.txt")
النتيجة
لو شغلت الكود راح تلاحظ انه كتب Ali.txt تلقائيا في خانة اسم الملف
==
قبل ان ابدا بالمقبض
hwnd
لا انسى ان اشكر الاستاذ عبد الله waget فتقريبا شرح المقبض من شرحه :b:
-----
hwnd = هو .. متغير يشير الى النافذة الرئيسية لبرنامجك ..
وفائدته ..
1- يقوم بدمج عملية نافذة برنامجك الرئيسية بعملية نافذة OpenFileDialog في شريط التاسك بار ( شريط المهام )
قبل اضافة المقبض
ولو اضفنا المقبض (
hwnd ) .. سيكون الناتج هكذا
2- يمنع مستخدم برنامجك من التنقل بين نافذة برنامجك الرئيسية ونافذة OpenFileDialog .. بحيث يمنعه من الوصول لنافذة برنامجك الرئيسية حتى يتم اغلاق نافذة الـ OpenFileDialog
قبل اضافة المقبض
لاحظ كيف نقلت الواجهة الرئيسية فوق واجهة OpenFileDialog
أما لو اضفت المقبض (
hwnd ) فلن استطيع ذلك لانها الان كعملية واحدة وليست كعمليتين
اذا اردت انت تجرب بنفسك .. تفضل
قم بفتح سيكربت جديد وادخل هذا الكود
كود:
[CENTER]#include <GUIConstantsEx.au3>
$Form = GUICreate("Test",400,200)
GUISetState(@SW_SHOW)
MsgBox(0,"","قبل اضافة المقبض OpenFileDialog ستظهر الآن نافذة الـ ")
FileOpenDialog("OpenFile",@DesktopDir,"All(*.*)",4,"")
MsgBox(0,"","بعد اضافة المقبض OpenFileDialog ستظهر الآن نافذة الـ ")
FileOpenDialog("OpenFile",@DesktopDir,"All(*.*)",4,"",$Form)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd[/CENTER]
اتمنى وضحت فكرة المقبض (
hwnd ) .. وبقي
طريقة صياغته
قم بوضع متغير الواجهة الرئيسية مكان خانة
hwnd ( الأخيرة )
PHP:
FileOpenDialog("OpenFile",@DesktopDir,"All(*.*)",4,"",$Form)
لاحظ خانة
hwnd ( الأخيرة ) ستلاحظ اني وضعت المتغير المرتبط بالواجهة الرئيسية لبرنامجنا
والمتغير في مثالنا هو $Form
وفي الاخير .. حبيت اقولكم ان المقبض (
hwnd ) ليس محصورا على FileOpenDialog
فهو موجود على الـ MsgBox و الـ InputBox >> تقريبا جميع الدوال التي تتعامل مع الواجهات :king:
==
طيب الان عرفنا تقريبا كل مدخلات الدالة وبقي
المخرجات
مخرجات الدالة
في حالة
النجاح .. ستخرج بمسار الملف
في حالة
الفشل ستخرج بـ "" >> نص فارغ
وفي حين اننا اختبرنا الحالة بالماكرو
ستخرج لنا الدالة في حالة النجاح 0
وفي حالة الفشل
1 اذا لم يتم تحديد ملف
و2 اذا كان الملف خاطئ او تالف
..
واذا اردنا ان نخرج مسار الملف المحدد من المستخدم
سنقوم بالتالي
PHP:
$path = FileOpenDialog("File Open",@DesktopDir,"Text Files(*.txt)")
الان ستخزن المخرجات في المتغير $path
يعني ان $path سيخرج لنا مسار الملف المحدد >> عند النجاح
أمثلةة
كود:
$path = FileOpenDialog("File Open",@DesktopDir,"Text Files(*.txt)")
[CENTER][CENTER][CENTER]if @error Then
MsgBox(16,"Error","خطأ")
Else
MsgBox(0,"Success","مسار الملف المحدد = " & $path)
EndIf[/CENTER]
[/CENTER]
[/CENTER]
مثال اخر اعمق :q:
كود:
$path = FileOpenDialog("File Open",@DesktopDir,"Text Files(*.txt)")
[CENTER]if @error Then
If @error = 1 Then
MsgBox(16,"Error","ل يتم اختيار اي ملف")
ElseIf @error = 0 Then
MsgBox(16,"Error","الملف تالف")
Else
MsgBox(0,"Success","مسار الملف المحدد = " & $path)
EndIf[/CENTER]
==
وفي ختام هذا الدرس اتمنى ان يكون واضح ومفهوم :q:
دعوآاتكم :b: