منتديات ماك للعرب  

العودة   منتديات ماك للعرب > ركن برمجة الماكنتوش > مجلس دورة ماك للعرب > الدروس
التسجيل التعليمات قائمة الأعضاء التقويم ماذا يحدث البحث مشاركات اليوم اجعل جميع المنتديات مقروءة

الدروس سيتم نشر الدروس على حلقات في هذا القسم باذن الله عن طريق الاستاذ ابو بكر

موضوع مغلق
 
LinkBack أدوات الموضوع طرق مشاهدة الموضوع
  #1 (permalink)  
قديم 03-28-2008, 09:13 PM
الصورة الرمزية أبو بكر
Moderator
 
تاريخ التسجيل: Dec 2004
الدولة: أبوظبي - الإمارات
المشاركات: 574
أبو بكر is on a distinguished road
افتراضي مختبر (١) - Carbon

دورة ماك للعرب - برمجة Apple
القسم الأول من أقسام Carbon - المبتدئ
مختبر Carbon رقم (1)
لمحة عن برمجة نظام الماكنتوش - الجزء الأول
السبت الموافق 30 -صفر- 1429هـ 8-3-2008م

________________________________________________
المصدر: كتاب (داخل Carbon) - تأليف أبو بكر، جميع الحقوق محفوظة لماك للعرب فقط.
المرجع: داخل الماكنتوش وهو مرجع Apple الخاص بها.
________________________________________________

الأهداف:
  • التعرف على برنامج Interface Builder واستخدامه في تصميم واجهة البرنامج.
  • تصميم كل من النوافذ والقوائم وتعديل بعض صفاتها.
  • استخدام روتينات هامة من صندوق أدوات الماكنتوش لقراءة الموارد التي تم تصميمها باستخدام Interface Builder.

ورشة العمل
  • قم بتشغيل برنامج Xcode، وإنشاء مشروع Carbon Application كما تعلمنا سابقا، تذكر من الضروري أن يكون نوع المشروع Carbon Applicaton، أعطه اسما مناسبا وليكن CarbonLab1.
  • ستظهر لك نافذة المشروع بمجرد أن تنتهي من إنشائه كما يبدو في هذا الشكل:


    الأن قم بالنقر مرتين على الملف المحدد في القائمة التي تعرض ملفات المشروع، اسم الملف: main.nib(English).
    يتم فتح الملف عن طريق برنامج Interface Builder، وستظهر لك نافذة الملف وبجانبها نافذة عناصر التحكم التي تقدمها تقنية Carbon، كما يوضح هذا الشكل:

    نافذة ملف الموارد الرئيسية


    نافذة عناصر التحكم التي تزودها تقنية Carbon لموارد الماكنتوش.

    من نافذة ملف main.nib الرئيسية انقر نقرا مزدوجا فوق رمز MainWindow، ستجد أن النافذة الرئيسية يتم عرضها على الشاشة، وهي نافذة البرنامج عند تنفيذه.

    الان اختر من قائمة Tools -> Show Inspector، ليتم عرض خصائص النافذة الرئيسية كما يظهر هذا الشكل:

    نافذة خصائص المورد المحدد وهو في هذه الحالة النافذة الرئيسية للبرنامج.

    سنقوم الأن بالتعرف على بعض الخيارات التي يقدمها برنامج Interface Builder وذلك عن طريق القوائم المنبثقة في نافذة Inspector.
    • تستطيع تحديد عنوان النافذة الافتراضي عن طريق حقل الكتابة Title. اكتب العنوان الذي تريده، سيتم اعداده ليكون عنوان النافذة الافتراضي.
      ومن قائمة Window Class تستطيع تحديد نوع النافذة، هل ما إذا كانت نافذة وثيقة، أو نافذة الأدوات الطوافة Floating Window، وهكذا..
    • بإمكانك أيضا تحديد مكان إظهار النافذة عن طريق قائمة Position، وتفيد في توسيط النافذة في وسط الشاشة تماما، أو إظهارها مكان مربع التنبيه، أو إظهارها بطريقة منسقة إذا ما كانت نافذة وثيقة كلما يتم إنشاؤها باختيار الأمر New من قائمة File. وتستطيع تحديد مكانها بشكل يدوي وذلك بتحريك النافذة نفسها على الشاشة، جرب ذلك.
    • من قسم عناصر التحكم Controls تستطيع تحديد ما إذا كانت النافذة تحتوي على مربع إقفال وتكبير وتصغير وتغيير حجم وكذلك ما إذا كانت تحتوي على شريط الأدوات.
    • وهناك بعض الخيارات أيضا مثل: Has Shadow تجدها في أسفل الخيارات. هذه أهم الخيارات في هذا المختبر، وسنستزيد منها كلما تقدمنا أكثر.
    • وهناك بعض الخيارات أيضا مثل: Has Shadow تجدها في أسفل الخيارات. هذه أهم الخيارات في هذا المختبر، وسنستزيد منها كلما تقدمنا أكثر.
    • الآن، ومن نافذة عناصر التحكم التي تزودها تقنية كاربون، قم بإدراج عنصر المورد Static Text إلى نافذة المشروع، قم بالنقر مرتين فوق كلمة Static Text واكتب اسمك بدلا منها. بعد ذلك حدد عنصر المورد واختر Make Centered Row و Make Centered Column من قائمة Layout->Alignment->Make Centered Row.. لتجعل العنصر في منتصف النافذة تماما.
    • قم بإدارج عناصر أخرى كالأزرار والرموز وغير عناوينها بنفس الطريقة، وتعرّف على خيارات نافذة الخصائص Inspector لكل منها.
      بعد أن تنتهي من التعديلات قم بإغلاق نافذة المشروع، انتبه لا تغلق النافذة الرئيسية للملف main.nib.. لم ننته بعد!
      ملاحظة: اسم النافذة MainWindow وهذا هو الاسم المرجعي الذي سنستخدمه عند الإشارة إليها أثناء عملية البرمجة. تستطيع تغييره عن طريق النقر فوقه مرتين في نافذة الملف mani.nib ويجب -حاليا- أن يكون هذا الاسم باللغة الإنجليزية.
  • سنلقي نظرة سريعة على شريط قوائم البرنامج:
    • انقر نقرا مزدوجا فوق المورد MenuBar وذلك في نافذة الملف main.nib. لاحظ أن شريط القوائم يتم عرضه في نافذة خاصة به.
    • قم بتغيير أي من خيارات القوائم المتاحة أمامك كأن تغيرها إلى اللغة العربية. أضف قوائم جديدة عن طريق نافذة عناصر التحكم التي تزودها تقنية Carbon.
  • قم الأن بحفظ التعديلات وإنهاء برنامج Interface Builder، والعودة إلى برنامج Xcode.
قم بتنفيذ البرنامج كما تعلمنا سابقا، ولاحظ تغييراتك. تهانينا.
الان افتح الملف main.c وامسح الشيفرة بأكمله.. واكتب هذه الشيفرة كما هي:

كود:
// Carbon Lab No 1: Using Interface builder.
#include <Carbon/Carbon.h>

int main()
{
    OSStatus                    err;
	IBNibRef					sNibRef;
	WindowRef					window;
	
    // Create a Nib reference, passing the name of the nib file (without the .nib extension).
    // CreateNibReference only searches into the application bundle.
    err = CreateNibReference( CFSTR("main"), &sNibRef );
    require_noerr( err, CantGetNibRef );
    
    // Once the nib reference is created, set the menu bar. "MainMenu" is the name of the menu bar
    // object. This name is set in InterfaceBuilder when the nib is created.
    err = SetMenuBarFromNib( sNibRef, CFSTR("MenuBar") );
    require_noerr( err, CantSetMenuBar );
    
	err = CreateWindowFromNib( sNibRef, CFSTR("MainWindow"), &window );
    require_noerr( err, CantCreateWindow );
    
    // Position new windows in a staggered arrangement on the main screen
    RepositionWindow( window, NULL, kWindowCascadeOnMainScreen );
    
    // The window was created hidden, so show it
    ShowWindow( window );
	
    // Run the event loop
    RunApplicationEventLoop();

CantSetMenuBar:
CantGetNibRef:
CantCreateWindow:
    return err;
}
الدراسة والتحليل:
تم تعريف ثلاث متغيرات في بداية الروتين الأساسي وهي:
المتغير err وهو متغير يتم فيه تسجيل القيم التي يعود الروتين المستدعى، وهذه القيمة تدلنا إذا ما حدث خطأ أثناء عملية التنفيذ.
المتغير sNibRef سنستخدمه للإشارة إلى ملف الموارد الذي تم تعديل محتوياته، لاحظ أن نوعه IBNibRef، وهذا النوع إشارة إلى نمط ملفات الموارد الخاصة ببرنامج Interface Builder.
المتغير window سنستخدمه ليشير إلى النافذة المطلوبة، فنستطيع عرضها أو إخفاؤها أو تعديلها عن طريق هذا المتغير.

بعد ذلك تم استدعاء الروتين CreateNibReference وهو من روتينات صندوق أدوات الماكنتوش ومهمته إنشاء مرجع وإشارة إلى الملف المقصود. لاحظ أن هذا الروتين يتطلب وسيطتين: الأولى هي اسم ملف الموارد، ويجب أن يكون الاسم هنا من نوع خاص، يسمى هذا النوع بجملة قاعدة البرمجة (Core Foundation String)، ولذلك تم استخدام الماكرو (CFSTR) لكي يقوم هذا الماكرو بتحويل الاسم من جملة لغة C (لغتنا التي نستخدمها في البرمجة) العادية إلى جملة قاعدة البرمجة.

والوسيطة الثانية هي المتغير الذي سيشير إلى ملف الموارد. أي أن الروتين سيسجل في هذا المتغير عنوان الملف بعد قراءته وتحميله إلى الذاكرة.
كما يقوم هذا الروتين بإعادة ناتج التنفيذ كقيمة رياضية، إن القيمة المعادة 0 (صفر) تعني أن التنفيذ تم على أفضل وجه.
بعد ذلك تم إضافة ماكرو التحقق من الأخطاء وهو require_noerr، لاحظ أن هذا الماكرو بحاجة إلى معلومتين، الأولى رقم الخطأ المراد اختباره، والثانية المكان الذي سيذهب إليه في حال وجود أية أخطاء، المكان هو CantGetNibRef وهو في أخر البرنامج مما يؤدي إلى إنهاء البرنامج على الفور.

بعد ذلك يتم إعداد شريط القوائم عن طريق الروتين SetMenuBarFromNib، أيضا هذا الروتين يتطلب تمرير وسيطتين الأولى، الإشارة إلى ملف الموارد المراد قراءة شريط القوائم منه، والثانية اسم شريط القوائم، لاحظ أن الاسم يجب أن يكون على هيئة جملة قاعدة البرمجة أيضا وليس على هيئة جملة لغتنا المستخدمة C. أيضا يتم التحقق من وجود الأخطاء بنفس الأسلوب.

بعد ذلك يتم تحميل النافذة من نفس الملف عن طريق استدعاء الروتين CreateWindowFromNib، و يتطلب هذا الروتين تمرير ثلاث وسائط وهي: الأولى إشارة إلى ملف الموارد الذي يحتوي على النافذة المطلوبة، والثانية اسم النافذة (في هذه الحالة MainWindow) وهو على هيئة جملة قاعدة البرمجة. والوسيطة الثالثة هي إشارة إلى النافذة بعد أن تتم قراءتها. أيضا يتم التحقق من وجود الأخطاء بنفس الأسلوب.

بعد ذلك يتم استدعاء روتين إظهار وعرض النافذة المعروف ShowWindow، يتطلب هذا الروتين وسيطة واحدة وهي إشارة النافذة المراد عرضها على الشاشة فقط.

بعد ذلك تم استدعاء الروتين RunApplicationEventLoop وذلك لكي يبقى البرنامج قيد التنفيذ ويستقبل خيارات المسخدم القياسية، وهو تابع لإدارة الأحداث الكاربونية، ووظيفته ادخال البرنامج في حلقة الأحداث حتى يستطيع المستخدم التفاعل معه.

بعد ذلك تم كتابة العناوين الثلاثة، لاحظ أن العنوان (Label) يجب أن ينتهي بنقطتين فوق بعض ( : )، وبمجرد حدوث أي خطأ عند استدعاء أي من الروتينات السابقة سيتم القفز إلى العنوان المناسب مما يؤدي إلى تخطي روتين حلقة الأحداث وإنهاء البرنامج على الفور.


البرنامج «مختبر كاربون الأول» أثناء تشغيله.


بانتظار استفساراتكم وأسئلتكم وإجاباتكم، والله الهادي والموفق إلى سواء السبيل.
الصور المرفقة
نوع الملف: png CarbonControls.png‏ (32.1 كيلوبايت, المشاهدات 81)
نوع الملف: png CarbonLab1Inspector.png‏ (63.7 كيلوبايت, المشاهدات 76)
نوع الملف: png CarbonLab1Project.png‏ (79.6 كيلوبايت, المشاهدات 77)
نوع الملف: png CarbonLab1Run.png‏ (71.2 كيلوبايت, المشاهدات 78)
نوع الملف: png mainWindow.png‏ (17.1 كيلوبايت, المشاهدات 75)
__________________
أبو بكر

التعديل الأخير تم بواسطة : أبو بكر بتاريخ 03-28-2008 الساعة 09:16 PM.
موضوع مغلق

  منتديات ماك للعرب > ركن برمجة الماكنتوش > مجلس دورة ماك للعرب > الدروس



أدوات الموضوع
طرق مشاهدة الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع
لا تستطيع كتابة ردود
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


جميع الأوقات بتوقيت GMT. الساعة الآن 02:59 AM.


Powered by vBulletin
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
جميع الحقوق محفوظة لموقع ماك للعرب ٢٠٠٢-٢٠٠٨م
Ad Management by RedTyger