بـرمـجـة مـكـونـات الـواجـهـة


المكون
الوصف
Push Button
تقوم أزرار الضغط بفعل معين عندما ينقر عليها  عندما تنقر على زر الضغط , سيظهر أنه نقر وعندما تحرر الفأرة عنه فإن الزر سيظهر مرتفعاً.
Toggle Button
تولد أزرار التبديل فعلاً وتشير فيما إذا كانت مفعلة أو ملغية , عندما تضغط على زر التبديل فإنه يظهر مضغوطاً موضحاً أنه مفتوح , عندما تحرر زر الفأرة على عكس زر الضغط فإن زر الضغط يبقى مضغوطاً حتى تنقره مرة أخرى.
Radio Button
إن أزرار الخيار تشبه مربعات الاختيار ولكن تكون نوعاً متعارضة ضمن مجموعة من أزرار الخيار المرتبطة , أي يمكنك أن تحدد فقط زراً واحداً في نفس الوقت وتتم قيادة هذه الكائنات من قبل Button Group.
Check Box
إن مربعات الاختيار تولد فعلاً عندما تختبر وتشير لحالتها أكانت مختبرة أم غير مختبرة, إن مربعات الاختبار مفيدة عندما يتم تزويد المستخدم بعدد من الاختبارات المستقلة التي تضبط النمط.
Edit text
إن عناصر تحكم النص المحرر عبارة عن حقول تمكن المستخدمين من إدخال أو تعديل العبارات النصية.
Static text
إن عناصر تحكم النص الستاتيكي تعرض خطوطاً من النصوص.
Slider
تقبل المنزلقات دخلاً رقمياً ضمن مجال محدد وذلك بتمكين المستخدم من تحريك الشريط المنزلق الذي يدعى بالمنزلقة أو الإبهام
List Box
تعرض مربعات القائمة قائمة من الأجزاء وتمكن المستخدمين من اختيار أحد الأجزاء أو أكثر.
Pop-Up Menu
تعرض القائمة المنسدلة قائمة من الاختبارات عندما ينقر المستخدمين على السهم.
Axes
إن المحاور تمكن واجهتك من عرض الرسومات والصور.
Panel
تجمع اللوحة مكونات الواجهة , بالتجميع البصري بالنسبة لأدوات التحكم , فإذا حركت اللوحة فإن أولادها ستتحرك معها وتحافظ على مكانها على اللوحة.
Button Group
تعتبر مجموعة الأزرار هذه شبيهة باللوحات ولكن تستخدم لتقود سلوك الاختبار الحصري لأزرار الخيار وأزرار التبديل.
ActiveX Component
تمكنك هذه المكونة من عرض أدوات التحكم الفعالة في واجهتك.


   1)   Radio Button

    إن هذا الزر يمتلك خاصية التحديد أو عدمه فهو إذا يبرمج بالطريقة التالية


if(get(hObject,Value)==get(hObject,Maxꞌ))
else
end
أما إذا كان لدينا عدة أزرار من هذا النوع ونريد تحديد أحداها و إزالة التحديد عن الباقين فإن العبارات البرمجية تكون :
Function radiobutton1_callback(hObject,eventdata,handles)
Set([handles.tadiobutton2 handles.radiobutton3],ꞌValueꞌ,0)
Function radiobutton2_callback(hObject,eventdata,handles)
Set([handles.tadiobutton1 handles.radiobutton3],ꞌValueꞌ,0)
Function radiobutton3_callback(hObject,eventdata,handles)
Set([handles.tadiobutton2 handles.radiobutton1],ꞌValueꞌ,0) 

    2)   Pop-Up Menus

نضع خيارات عديدة في هذه القائمة المنسدلة عن طريق String وعندما نريد أن نخص كل خيار ببرنامج معين فإن الvalue تقدم لنا رقم السطر الذي اخترناه في String وهذا يمكننا من كتابة التالي :
Function popupmenu_callback(hObject,eventdata,handles);
Val=get(hObject,ꞌValueꞌ);
Switch val
case 1
case 2
end
        ولكن إذا كان لدينا خيارات عديدة ونريد التعامل مع ما كتبناه وليس مع رقم السطر :
Function popupmenu_callback(hObject,eventdata,handles)
val=get(hObject,ꞌValueꞌ);
String_list=get(hObject,ꞌstringꞌ);
Selected_string=string_list{val};
         إن نتيجة string_list ستكون مصفوفة من النوع cell وفيها جميع الخيارات التي
         وضعت في string.

    3)   Toggle Button
إن هذا الزر يأخذ وضعيتين فعند الضغط يأخذ قيمة 1 في الـ value الموجودة في الخصائص وقيمة 0 عن الإفلات :
Function togglebutton_callback(hObject,eventdata,handles)
Button_state=get(hObject,ꞌValueꞌ);
if  button_state==1      …….                                                                                elseif button_state==0       …….
end


        4)   Check Boxes
Function checkbox1_callback(hObject, eventdata, handles)                       if(get(hObject,ꞌValueꞌ)==get(hObject,ꞌMaxꞌ))
else
end


        5)   edit text
Function edittext1_callback(hObject, eventdata, handles)
user_string = get(hObject,ꞌstringꞌ);

        6)   Sliders
Function slider1_callback(hObject, eventdata, handles)
slider_string = get(hObject,ꞌValueꞌ);

        7)   List Box
إن هذا الزر يشبه Pop-Up Menu إلا أنك تستطيع ان تختار هنا عدة خيارات في نفس الوقت. ضع هذا الكائن في صفحة فارغة من GUI واكتب في String عدة خيارات ثم شغل الملف وحاول أن تختار اكثر من خيار تجد إنك لن تستطيع ذلك فماذا نفعل إزاء ذلك ؟ نقوم بفتح خصائص الزر وتغيير قيمة max إلى قيمة غير الواحد , ثم نعود ونلاحظ أنه أصبح بإمكاننا اختيار عدة خيارات.
Function listbox1_callback(hObject, eventdata, handles)
index_selected = get(handles.listbox1,ꞌValueꞌ);
list = get(handles.listbox1,ꞌstringꞌ);
item_selected = list(index_selected);

أهم التعليمات المستخدمة في GUI 
التابع get :
مهمته ببساطة أخذ أو معرفة أي خاصية لأي عنصر تريد بمعنى أنه عندما تضغط على أي عنصر مرتين فإن النافذة التي سوف تفتح أمامك هي نافذة خصائص هذا العنصر , إن كل هذه الخاصيات تستطيع معرفتها عن طريق تعليمة get.
Variable=get(handles.buttonname,property)

التابع set : 
هذه التعليمة مقابلة لعمل get فهي تقوم بوضع أو تغيير خاصية معينة ما برمجياً.
set(handles.buttonname,property,variablename)

التابع global :
 ملف البرمجة يحوي على العديد من التوابع لكن هذه التوابع مستقلة أي أن المتغيرات الموجودة في function ما لا تؤثر على المتغيرات الموجودة في الآخر (المتغيرات المحلية) حتى لو كانا يملكان نفس الاسم فلذلك أحياناً نريد تصدير قيمة المتغير من تابع لآخر فنلجأ لجعل هذا المتغير عالمي أو شامل وذلك باستخدام هذه التعليمة.
التابع guidata:
إن GUIDE و بشكل تلقائي يستخدم guidata و لإنشاء المحافظة على بنية handles, هذه  البنية تمرر بشكل أوتوماتيكي كوسيط لكل استدعاء, حيث أن البنية handles تتضمن المقابض لكل المكونات في الواجهة GUI. في الواجهات المبنية باستخدام GUIDE, فإنه لا يمكنك استخدام guidata لقيادة أي متحول  غير البنية handles. إذا فعلت ذلك, فإنه يمكن أن تكتب فوق بنية handle وبالتالي واجهتك لن تعمل. إذا كنت تريد استخدام معطيات الواجهة GUI لتشارك المعطيات المعرفة للتطبيق ضمن الاستدعاءات , فإنه يجب عليك أن تخزن المعطيات في الحقول التي تريد أن تضيفها إلى بنية handles. لاحظ أن قوالب GUIDE تستخدم بنية handle لتخزين المعطيات المعرفة للتطبيق. هذه البنية مفيدة جداً في حال برمجة تطبيقات تحوي عدة واجهات رسومية حيث إنها الأساس لتمرير الوسطاء بين الواجهات الرسومية.