فى هذه الجزئية سنخطو خطواتنا الأول مع GTK#
سننشئ نافذة بسيطة ونموضعها فى منتصف الشاشة
using Gtk; class SharpApp : Window { public SharpApp() : base("Center") { SetDefaultSize(250, 200); SetPosition(WindowPosition.Center); DeleteEvent += delegate { Application.Quit(); }; Show(); } public static void Main() { Application.Init(); new SharpApp(); Application.Run(); } }
هذا الكود يعرض نافذة بسيطة ويضعها فى منتصف الشاشة
gmcs -pkg:gtk-sharp-2.0 center.csهكذا نقوم بعمل ترجمة للكود
using Gtk;نستدعى Gtk لنستطيع الوصول للصفوف داخلها بدون الحاجة لكتابة الإسم الكامل (نستطيع كتابة Window بدلا من Gtk.Window
class SharpApp : Window {تطبيقنا مبنى على الصف SharpApp اللذى يرث الصف Window
Our application is based on the SharpApp class. This class inherits from the Window class.
public SharpApp() : base("Center") { ... }
هذا هو المشيد، ونستدعى المشيد للأب عن طريق استخدام base
SetDefaultSize(250, 200);
نحدد مساحة النافذة
SetPosition(WindowPosition.Center);نحدد الموضع الى المنتصف
DeleteEvent += delegate { Application.Quit(); };نربط الحدث DeleteEvent “يحدث عن محاولة اغلاق التطبيق" ويقوم الdelegate بإغلاق التطبيق
Show();الآن نعرض النافذة، النافذة ليست ظاهرة حتى نستدعى الطريقة Show
public static void Main() { Application.Init(); new SharpApp(); Application.Run(); }
الطريقة Main هى اللتى يبدأ عندها تنفيذ التطبيق، فتقوم ببدأ وتشغيل البرنامج
فى هذا المثال سنعرض ايكون للتطبيق، معظم مديرى النوافذ يعرضو الأيكون فى اعلى يسار شريط العنوان وايضا فى شريط المهام
icon.cs using Gtk; using System; class SharpApp : Window { public SharpApp() : base("Icon") { SetDefaultSize(250, 160); SetPosition(WindowPosition.Center); SetIconFromFile("web.png"); DeleteEvent += new DeleteEventHandler(OnDelete); Show(); } public static void Main() { Application.Init(); new SharpApp(); Application.Run(); } void OnDelete(object obj, DeleteEventArgs args) { Application.Quit(); } }
هذا الكود يعرض ايكون للتطبيق
SetIconFromFile("web.png");الطريقة SetIconFromFile تحدد الأيكون الخاصة بالنافذة ويتم تحميلها من مسار ما على القرص (هنا ملف web.png فى المجلد الحالى)
DeleteEvent += new DeleteEventHandler(OnDelete);هذه طريقة اخرى لربط معالج حدث بالحدث (اوضح قليلا..)
void OnDelete(object obj, DeleteEventArgs args) { Application.Quit(); }
هذا معالج حدث للحدث delete-event
Figure: Icon
فى المثال التالى سنحسن معرفتنا ب GTK# اكثر قليلا
buttons.cs using Gtk; class SharpApp : Window { public SharpApp() : base("Buttons") { SetDefaultSize(250, 200); SetPosition(WindowPosition.Center); DeleteEvent += delegate { Application.Quit(); }; Fixed fix = new Fixed(); Button btn1 = new Button("Button"); btn1.Sensitive = false; Button btn2 = new Button("Button"); Button btn3 = new Button(Stock.Close); Button btn4 = new Button("Button"); btn4.SetSizeRequest(80, 40); fix.Put(btn1, 20, 30); fix.Put(btn2, 100, 30); fix.Put(btn3, 20, 80); fix.Put(btn4, 100, 80); Add(fix); ShowAll(); } public static void Main() { Application.Init(); new SharpApp(); Application.Run(); } }
ننشئ 4 ازرار على النافذة، سنرى الفرق بين الحاويات والأبناء وسنقوم بتغير بعض خصائصهم
Fixed fix = new Fixed();fixed هى ويدجت غير ظاهر "حاوية" مهمته احتواء ويدجات اخرى
Button btn1 = new Button("Button");الزر هو ابن ليتم اضافته داخل حاوية
btn1.Sensitive = false;نوقف عمل الزر "غير قابل للضغط"
Button btn3 = new Button(Stock.Close);الزر الثالث يعرض صورة داخل المساحة الخاصة به، توفر GTK# مجموعة من الصور المبنية داخليا لإستخدامها
btn4.SetSizeRequest(80, 40);نعيد تحديد مساحة الزر
fix.Put(btn1, 20, 30); fix.Put(btn2, 100, 30); ...
نضع الأزرار فى الحاوية fix
Add(fix);نجعل fix هو الحاوية الرئيسى للنافذة
ShowAll();تستدعى Show الخاصة بكل الأبناء لعرضهم على النافذة
Figure: Buttons
فى هذا الفصل كتبنا برامجنا الأولى مع GTK#
Home Contents Top of Page
ZetCode last modified January 23, 2009 © 2007 - 2009 Jan Bodnar