29-09-12, 04:27 AM
كاتب الموضوع محمد الناشـري
السلام عليكم ورحمة الله
السلام عليكم ورحمة الله
عنصر التحكم Calendar
يعد عنصر التحكم Calendar من عناصر التحكم الغنية ( يمكن برمجتة ككائن مفرد ) .يظهر بشكل افتراضي في طريقة العرض الشهرية حيث ينتقل المستخدم شهراً شهراً .
عند النقر فوق التاريخ يتم تميزة بلون مختلف .
يمكن استرداد اليوم باعتبارة الكائن DateTime من الخاصية Calender.SelectedDate
كما يمكن ايضاً عمل الكثير من اوضاع التحديد للسماح للمستخدمين بتحديد اسابيع او اشهر بأكملها أو جعل التقويم ثابت لايتطلب عمل اي تحديد
وذلك من خلال الخاصية Selection Mode كالاتي :
1 - None جعل التقويم ثابت .
2 - Day تحديد يوم معين .
3 - DayWeek تحدد اسابيع .
4 - DayWeekMonth تحدد اشهر .
مع ملاحظة أن عند الضبط على DayWeek فان المستخدم يستطيع تحديد الايام ايضاً .. وكذلك مع DayWeekMonth .
يمكن تحديد بداية الاسبوع من الخاصية FirstDayofWeek .
تنسيق التقويم
هناك العديد من التنسيقات التي يمكن تطبيقها مباشرة على هذا العنصر ويمكن الوصول اليها من Calendar Tasks ثم AutoFormat
هناك ايضاً العديد من الخصائص للتحكم بالمظهر والتي يمكن ضبطها مثل DayHeadrStyle و DayStyle الخ ... والتي اتركها للمحاولة والاكتشاف .
الحصول على قيمة التاريخ ( مجموعة من التواريخ ) المحددة في التقويم
يمكن باستخدام الحلقة For Each من خلال الخاصية SelectedDates الحصول على التاريخ او مجموعة التواريخ المحددة في التقويم كالاتي :
كود :
Protected Sub Calendar1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Calendar1.SelectionChanged
Dim dt As DateTime
For Each dt In Calendar1.SelectedDates
lblDates.Text &= dt.ToLongDateString()
Next
End Sub
عند استخدام تقويم لعمل تحديد .. فقد لاتريد السماح للمستخدمين بتحديد تاريخ اعلى من تاريخ اليوم الحالي مثلاً
الفكرة الاساسية في تقييد التاريخ هي باستخدام الحدث Calendar.DayRender يتم انشاء الحدث عندما يكون التقويم على وشك اعداد شهر ليتم عرضة للمستخدم .
الامر الذي يتيح امكانية التحقق من التاريخ الذي يتم اضافتة الى الشهر الحالي من خلال الخاصية ( e.Day ) وتقرير ما اذا كان التاريخ سيكون قابلا للتحديد ام لا ..
كود :
Private Sub DayRender(ByVal source As Object, ByVal e As DayRenderEventArgs) Handles Calendar1.DayRender
If e.Day.IsWeekend Or e.Day.Date.Year > 2009 Then
e.Day.IsSelectable = False
End If
End Sub
يتبع ..