المحتويات

الأداوت الأساسية فى مكتبات WinForms (الجزء الثانى)

سوف نكمل فى هذا الجزء التعرف على بعض الأدوات الأساسية فى مكتبات WinForms.

زر الإختيارRadioButton

يتيح لك زر الإختيار تحديد إختيار واحد من مجموعة إختيارات فى ازرار إختيار أخرى و الأداة GroupBox تستخدم لتجميع ازرار الإختيار مع بعضهم البعض.

radiobutton.py

#!/usr/bin/ipy

import clr
clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")

from System.Windows.Forms import Application, Form, StatusBar
from System.Windows.Forms import RadioButton, GroupBox
from System.Drawing import Size, Point


class IForm(Form):

    def __init__(self):

        self.Text = "RadioButton"
        self.Size = Size(240, 240)

        gb = GroupBox()
        gb.Text = "Sex"
        gb.Size = Size(120, 110)
        gb.Location = Point(20, 20)
        gb.Parent = self

        male = RadioButton()
        male.Text = "Male"
        male.Parent = gb
        male.Location = Point(10, 30)
        male.CheckedChanged += self.OnChanged


        female = RadioButton()
        female.Text = "Female"
        female.Parent = gb
        female.Location = Point(10, 60)
        female.CheckedChanged += self.OnChanged

        self.statusbar = StatusBar()
        self.statusbar.Parent = self

        self.CenterToScreen()

    def OnChanged(self, sender, event):
        if sender.Checked:
            self.statusbar.Text = sender.Text
    
    
Application.Run(IForm())

فى المثال عرضنا زرين إختيار داخل صندوق مجموعة و الممكن تحديد إختيار واحد فقط فى المرة الواحدة و نتيجة الإختيار سوف تظهر فى شريط الحالة.

 gb = GroupBox()
 gb.Text = "Sex"

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

 male = RadioButton()
 male.Text = "Male"
 male.Parent = gb

تم إنشاء زر إختيار بالنص "Make".و الحاوى له هو صندوق التجميع.

 def OnChanged(self, sender, event):
     if sender.Checked:
         self.statusbar.Text = sender.Text

الدالة OnChanged() تصع النص للزر الذى تم إختياره فى شريط الحالة.


RadioButton

Figure: RadioButton

التقويم الشهرى MonthCalendar

فى المثال القادم سوف نتحدث عن الأداة MonthCalendar و هى تسمح للمستخدم بتحديد تاريخ معين فى شكل رسومى.

monthcalendar.py

#!/usr/bin/ipy

import clr
clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")

from System.Windows.Forms import Application, Form
from System.Windows.Forms import Label, MonthCalendar
from System.Drawing import Size, Point


class IForm(Form):

    def __init__(self):
        self.Text = 'MonthCalendar'
        self.Size = Size(240, 240)
        
        calendar = MonthCalendar()
        calendar.Parent = self
        calendar.Location = Point(20, 20)
        calendar.DateSelected += self.OnSelected

        self.date = Label()
        self.date.Location = Point(30, 180)
        self.date.Parent = self
        dt = calendar.SelectionStart
        self.date.Text = str(dt.Month) + "/" + str(dt.Day) + "/" + str(dt.Year)
        
        self.CenterToScreen()
    

    def OnSelected(self, sender, event): 
        dt = sender.SelectionStart
        self.date.Text = str(dt.Month) + "/" + str(dt.Day) + "/" + str(dt.Year)
    

Application.Run(IForm())

فى المثال عرضنا MonthCalendar و Label.

  calendar = MonthCalendar()
  ...
  self.date = Label()

هناك أداتين تقويم شهرى و أداة عنوان MonthCalendar و Label و الأخيرة سوف يظهر فيها التاريخ المحدد.

 def OnSelected(self, sender, event): 
     dt = sender.SelectionStart
     self.date.Text = str(dt.Month) + "/" + str(dt.Day) + "/" + str(dt.Year)

عند تحديد تاريخ معين من أداة التقويم الشهرى يتم استدعاء الدالة OnSelected() و الخاصية SelectionStart قيمتها هى التاريخ المحدد من أداة التقويم الشهرى.


MonthCalendar

Figure: MonthCalendar

صندوق النص TextBox



أداة صندوق النص TextBox تستخدم لعرض أو استقبال نص و يمكن أن يكون النص فى سطر واحدة أو فى عدة سطور كما تستخدم لإخفاء كلمات المرور عند إدخالها.

textbox.py

#!/usr/bin/ipy

import clr
clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")

from System.Windows.Forms import Application, Form
from System.Windows.Forms import Label, TextBox
from System.Drawing import Size, Point



class IForm(Form):

    def __init__(self):

        self.Text = 'TextBox'

        self.text = Label()
        self.text.Parent = self
        self.text.Text = "..."
        self.text.AutoSize = True
        self.text.Location = Point(60, 40)

        tbox = TextBox()
        tbox.Parent = self
        tbox.Location = Point(60, 100)
        tbox.KeyUp += self.OnKeyUp

        self.Size = Size(250, 200)
        self.CenterToScreen()
    

    def OnKeyUp(self, sender, event): 
        self.text.Text = sender.Text
    

Application.Run(IForm())

يعرض المثال صندوق نص و أداة عنوان و بمجرد الكتابة فى صندوق النص تظهر الكتابة فى أداة العنوان laebl.

 self.text = Label()
 ...
 self.text.AutoSize = True

تم إنشاء أداة العنوان Label و الخاصية AutoSize مفعله حتى تتمدد أداة العنوان لتظهر كامل النص.

 tbox = TextBox()
 ...
 tbox.KeyUp += self.OnKeyUp

هنا ربطنا حدث KeyUp لصندوق النص لذلك عند الكتابه فى صندوق النص سوف يستدعى الدالة OnKeyUp().

 def OnKeyUp(self, sender, event): 
     self.text.Text = sender.Text

فى الدالة OnKeyUp() نقوم بتحديث النص فى أداة العنوان بالنص الذى تمت كتابته فى صندوق النص.


TextBox

Figure: TextBox

صندوق الصورة PictureBox



صندوق الصورة PictureBox عبارة عن أداة تستخدم لعرض الثور على الناقذة.

picturebox.py

#!/usr/bin/ipy

import sys
import clr
clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")

from System.Windows.Forms import Application, Form, PictureBox
from System.Drawing import Size, Point, Bitmap


class IForm(Form):

    def __init__(self):
        self.Text = 'PictureBox'
        
        try:
            castle = Bitmap('redrock.png') 
        except Exception, e:
            print 'Cannot read image file'
            print e.msg
            sys.exit(1)
 
        pb = PictureBox()
        pb.Parent = self
        pb.Size = Size(castle.Width, castle.Height)
        pb.Location = Point(2, 2)
        pb.Image = castle

        self.Size = Size(castle.Width, castle.Height)
        self.CenterToScreen()


Application.Run(IForm())

المثال يعرض صورة بإمتداد png على النافذة.

 try:
     castle = Bitmap('redrock.png') 
 except Exception, e:
     print 'Cannot read image file'
     print e.msg
     sys.exit(1)      

مصدر الصورة هو مجلد العمل الذى به التطبيق.

 pb = PictureBox()     

تم إنشاء أداة صندوق الصورة PictureBox.

 pb.Image = castle    

هنا خاصية الImage تشير إلى الصورة التى أنشأناها.

 self.Size = Size(castle.Width, castle.Height)

هنا نجعل حجم الصورة يساوى حجم النافذة.


PictureBox

Figure: PictureBox

و بهذا نكون قد أنهبنا جزئية الأداوت الأساسية من الدرس.


المحتويات