في هذا القسم ...
|
"الكائنات
المتاحة في الواجهات الرسومية"
"برمجة عناصر التحكم"
"أهم التعليمات المستخدمة في الـ GUI"
|
المكون
|
الوصف
|
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
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
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};
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
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
else
end
5) edit text
Function edittext1_callback(hObject, eventdata, handles)
user_string = get(hObject,'string');
user_string = get(hObject,'string');
6) Sliders
Function slider1_callback(hObject, eventdata, handles)
slider_string = get(hObject,'Value');
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);
index_selected = get(handles.listbox1,'Value');
list = get(handles.listbox1,'string');
item_selected = list(index_selected);
أهم التعليمات المستخدمة في GUI
التابع get:
مهمته ببساطة أخذ أو معرفة أي خاصية لأي عنصر تريد بمعنى أنه عندما تضغط على أي عنصر مرتين فإن النافذة التي سوف تفتح أمامك هي نافذة خصائص هذا العنصر , إن كل هذه الخاصيات تستطيع معرفتها عن طريق تعليمة get.
التابع global:
ملف البرمجة يحوي على العديد من التوابع لكن هذه التوابع مستقلة أي أن المتغيرات الموجودة في function ما لا تؤثر على المتغيرات الموجودة في الآخر (المتغيرات المحلية) حتى لو كانا يملكان نفس الاسم فلذلك أحياناً نريد تصدير قيمة المتغير من تابع لآخر فنلجأ لجعل هذا المتغير عالمي أو شامل وذلك باستخدام هذه التعليمة.
التابع get:
مهمته ببساطة أخذ أو معرفة أي خاصية لأي عنصر تريد بمعنى أنه عندما تضغط على أي عنصر مرتين فإن النافذة التي سوف تفتح أمامك هي نافذة خصائص هذا العنصر , إن كل هذه الخاصيات تستطيع معرفتها عن طريق تعليمة get.
Variable=get(handles.buttonname,'property')
هذه التعليمة مقابلة لعمل get فهي تقوم بوضع أو تغيير خاصية معينة ما برمجياً.
set(handles.buttonname,'property',variablename)
ملف البرمجة يحوي على العديد من التوابع لكن هذه التوابع مستقلة أي أن المتغيرات الموجودة في function ما لا تؤثر على المتغيرات الموجودة في الآخر (المتغيرات المحلية) حتى لو كانا يملكان نفس الاسم فلذلك أحياناً نريد تصدير قيمة المتغير من تابع لآخر فنلجأ لجعل هذا المتغير عالمي أو شامل وذلك باستخدام هذه التعليمة.
التابع guidata:
إن GUIDE و بشكل تلقائي يستخدم guidata و لإنشاء المحافظة على بنية handles, هذه البنية تمرر بشكل أوتوماتيكي كوسيط لكل استدعاء, حيث أن البنية handles تتضمن المقابض لكل المكونات في الواجهة GUI. في الواجهات المبنية باستخدام GUIDE, فإنه لا يمكنك استخدام guidata لقيادة أي متحول غير البنية handles. إذا فعلت ذلك, فإنه يمكن أن تكتب فوق بنية handle وبالتالي واجهتك لن تعمل. إذا كنت تريد استخدام معطيات الواجهة GUI لتشارك المعطيات المعرفة للتطبيق ضمن الاستدعاءات , فإنه يجب عليك أن تخزن المعطيات في الحقول التي تريد أن تضيفها إلى بنية handles. لاحظ أن قوالب GUIDE تستخدم بنية handle لتخزين المعطيات المعرفة للتطبيق. هذه البنية مفيدة جداً في حال برمجة تطبيقات تحوي عدة واجهات رسومية حيث إنها الأساس لتمرير الوسطاء بين الواجهات الرسومية.
إن GUIDE و بشكل تلقائي يستخدم guidata و لإنشاء المحافظة على بنية handles, هذه البنية تمرر بشكل أوتوماتيكي كوسيط لكل استدعاء, حيث أن البنية handles تتضمن المقابض لكل المكونات في الواجهة GUI. في الواجهات المبنية باستخدام GUIDE, فإنه لا يمكنك استخدام guidata لقيادة أي متحول غير البنية handles. إذا فعلت ذلك, فإنه يمكن أن تكتب فوق بنية handle وبالتالي واجهتك لن تعمل. إذا كنت تريد استخدام معطيات الواجهة GUI لتشارك المعطيات المعرفة للتطبيق ضمن الاستدعاءات , فإنه يجب عليك أن تخزن المعطيات في الحقول التي تريد أن تضيفها إلى بنية handles. لاحظ أن قوالب GUIDE تستخدم بنية handle لتخزين المعطيات المعرفة للتطبيق. هذه البنية مفيدة جداً في حال برمجة تطبيقات تحوي عدة واجهات رسومية حيث إنها الأساس لتمرير الوسطاء بين الواجهات الرسومية.