تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
من المنتدى القديم - للمبتدئين كل ما تريد معرفته عن الوقت والتاريخ والأدوات المتعلقة
#1
كاتب الموضوع : أحمد جمال

هي مجموعة من الدروس والمقالات التي كانت موجودة منذ مدة في المنتديات ولكنها ضاعت مع ضياع قاعدة البيانات ، هذه واحدة منها :
اعداد : فتى فيجوال .

عنوان الموضوع : للمبتدئين : كل ما تريد معرفته عن الوقت - التاريخ - والأدوات المتعلقة بهما .

بسم الله الرحمن الرحيم .

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

أولاً : عرض الوقت في Label أو غيره بالطريقة القياسية - وكذلك التاريخ :

الأمر بسيط جداً ... كل ما عليك هو وضع Timer وتغيير خاصية Interval = 1000 مثلاً للوقت وأكثر للتاريخ ، ومن ثم كتابة الأمر التالي :

كود :
Label1.Caption = DateTime
ومن ثم ضع . ستظهر لك قائمة من الطرق هذا تفصيل أهمها :

كود :
Date : 07/07/2003
Date$ : 07-07-2003
Now : 07/07/2003 04:37:21 ص
Time : 04:38:30 ص
Time$ : 16:38:46
هناك أيضاً Timer : تعود بعدد الثواني من منتصف الليل وحتى الوقت الحالي ... ويمكن أن تستفيد منها بأكثر من طريقة .
* ملاحظة : في كل ما سبق يمكن كتابته مباشرة دون كتابة DateTime .

ثانياً : عرض جزء من الوقت أو التاريخ ( سنة - شهر - يوم - ساعة - دقيقة - ثانية )

بنفس الطريقة السابقة أو بغيرها من الطرق ولكن يصبح الكود بالشكل التالي ( للثانية مثلاً ) .

كود :
Text1.Text = [color=red]Second[/color](Now)
غير المكتوب بالأحمر حسب المطلوب ليصبح ( Minute - Hour - Day - Month - Year ) .
ويمكنك استخراج هذه القمية من قيمة أخرى مرسلة بالشكل التالي على سبيل المثال .

كود :
Dim A1
A1 = "12/11/1424"
Msgbox Day(A1)
ثالثاً : عرض التاريخ الهجري والميلادي الحاليين :

يتم ذلك بتحويل طريقة التاريخ بالشكل التالي للهجري :

كود :
VBA.Calendar = vbCalHijri
وللميلادي :

كود :
VBA.Calendar = vbCalGreg
ومن ثم كتابة أمر التاريخ بصورة طبيعية كما يلي :

كود :
Text1.Text = DateTime.Date
رابعاً التحويل بين التاريخين الهجري والميلادي :

نكتب هذه الدالة في موديول :

كود :
Public Function TransDate(thedate As Date, TypeTrans As Integer) As String
Dim TempDate As String, MD As Date, a As String
If TypeTrans = 1 Then
VBA.Calendar = vbCalHijri
TempDate = CStr(thedate)
TransDate = TempDate
VBA.Calendar = vbCalGreg
Text1 = TransDate
Else
a = CStr(thedate)
VBA.Calendar = vbCalHijri
MD = CDate(a)
VBA.Calendar = vbCalGreg
TransDate = CStr(Format(MD, "yyyy/mm/dd"))
txtdateofenglish = TransDate
End If
End Function
ومن ثم في زر الأمر ( للتحويل من ميلادي إلى هجري )
Dim Date1
Date1 = TransDate(Text1, 1)
MsgBox Format(Date1, "DD/MM/YYYY")
وللتحويل من هجري إلى ميلادي :
Dim Date1
Date1 = TransDate(Text1, 2)
MsgBox Format(Date1, "DD/MM/YYYY")
خامساً : معرفة اليوم من الأسبوع .

نضع هذا الأمر في المكان المطلوب :

كود :
Dim Day_Now As Integer
Day_Now = Weekday(Date)
If Day_Now = 1 Then Label1 = "الأحد"
If Day_Now = 2 Then Label1 = "الاثنين"
If Day_Now = 3 Then Label1 = "الثلاثاء"
If Day_Now = 4 Then Label1 = "الأربعاء"
If Day_Now = 5 Then Label1 = "الخميس"
If Day_Now = 6 Then Label1 = "الجمعة"
If Day_Now = 7 Then Label1 = "السبت"
سادساً : عمل ساعة بسيطة بعقارب

( الطريقة لأحد أعضاء المنتدى لا أتذكر اسمه تحديداً ولكنه وضعها قريباً . ورأيت أن اضيفها هنا لارتباطها بالموضوع بعد إذنه طبعاً )
ضع تايمر وغير Intrval = 1000 واجعل وحدة قياس الفورم Pixel ثم اكتب ما يلي .

كود :
Dim x, y, w, m
Private Sub Form_Load()
y = Me.Height / 2 'تحديد نقطة منتصف الفورم
x = Me.Width / 2 'تحديد نقطة منصف الفورم
w = 1700
End Sub
Private Sub Timer1_Timer()
Me.Cls 'مسح ما في الفورم
DrawWidth = 4: Me.Circle (x, y), w 'رسم دائرة قطرها 1700 هي قيمة w
DrawWidth = 4: Me.Line (x, y)-(x + (900 * Sin(Hour(Now) * 3.1415 / 6)), y - (900 * Cos(Hour(Now) * 3.1415 / 6))), &HFFFF00 ' رسم عقرب الساعات
DrawWidth = 3: Me.Line (x, y)-(x + (1200 * Sin(Minute(Now) * 3.1415 / 30)), y - (1200 * Cos(Minute(Now) * 3.1415 / 30))), vbYellow 'رسم عقرب الدقائق
DrawWidth = 1: Me.Line (x, y)-(x + (1500 * Sin(Second(Now) * 3.1415 / 30)), y - (1500 * Cos(Second(Now) * 3.1415 / 30))), vbRed 'رسم عقرب الثواني
End Sub
سابعاً : معرفة الوقت المنقضي على تشغيل الجهاز :

نكتب في موديول ما يلي :

كود :
Declare Function GetTickCount Lib "kernel32" () As Long
ومن ثم نكتب في زر الأمر :

كود :
Dim Minutes As Long
Dim Hours As Long
Dim My_Time As Long
My_Time = GetTickCount
Hours = ((lngCount / 1000) / 60) / 60
Minutes = ((lngCount / 1000) / 60) Mod 60
MsgBox Hours & ":" & Minutes
ثامناً : أداة Calendar .

لاضافتها قم بالضغط على Ctrl + T ومن ثم اختيار Microsoft Calendar Control 10.0 أو أي اصدار آخر .
ومن ثم قم برسمها على الفورم ، وستجد بها العديد من الخيارات وأهمها ( هذه الخيارات أغلبها في Custem ) .
* Value : لتحديد التاريخ المطلوب ومنه يمكن ضبطها بوضع الأمر التالي :

كود :
Calendar1.Value = DateTime.Calendar
* First Day : لتحديد اليوم الأول من الأسبوع .
* Day Length - Month Length : لتحديد طريقة عرض اليوم والشهر .
* Grid Call Efect : لاختيار طريقة من ثلاث طرق للعرض باختلاف التحديد .
ستجد أيضاً العديد من الخيارات لاظهارها واخفائها تحت بند Show .
ومن ثم في Font ستجد ثلاثة أنواع : خط ( اليوم من الأسبوع - الأرقام الخاصة بأيام الشهر - العنوان ) .
وفي Color ستجد لون ( الخلفية - اليوم من الأسبوع - الأيام من الشهر - شيء ما لا أعرفه - العنوان ) .
أما عن الأوامر التي يمكن استخدامها فمنها:
NextDay - NextMonth - NextWeek - NextYear ( اليوم - الأسبوع - الشهر - السنة ) التالية .
وعكسها : PreviousDay - PreviousMonth - PreviousWeek - PreviousYear

تاسعا : عمل مؤقت ليدق جرس عند مدة معينة :

الامر ليس صعباً ، فكل ما في الأمر هو وضع Timer واختبار الوقت بالشكل التالي :
If Text1.Text = DateTime.Time Then Ring
حيث أن Text1 تحتوي على الوقت المطلوب ، و Ring هو حدث ليدق جرس أو لتظهر رسالة .

عاشراً : تغيير وقت الكومبيوتر :

اكتب الوقت الذي تريده في Text1 مثلاً ثم اكتب الأمر التالي فقط :
DateTime.Time = text1.Text

الحادي عشر : عمل ستوب ووتش :

الأمر بسيط جداً ... ضع أربع مربعات نص Text1,Text2,Text3,Text4 ثم ضع الأمر التالي في Timer بعد ضبط خاصية Intrval = 100 :

كود :
Text4 = Text4 + 1
If Text4 = 9 Then
Text3 = Text3 + 1
Text4 = 0
End If
If Text3 = 59 Then
Text2 = Text2 + 1
Text3 = 0
End If
If Text2 = 59 Then
Text1 = Text1 + 1
Text2 = 0
End If
وفي زر Stop اكتب :

كود :
Timer1.Enabled = False
وفي زر 00:00 اكتب :

كود :
Text1.Text = 0 : Text2.Text = 0 : Text3.Text = 0 : Text4.Text = 0
* تذكر أنك تستطيع أن تكتب أكثر من سطر في نفس السطر عن طريق تفريق الأسطر بواسطة نقطتين فوق بعضها : .

الثاني عشر : عمل عداد تنازلي :

اكتب في Genral
Dim My_Time
وضع Timer وغير interval إلى 1000 وخاصية Enabled = False .
ضع Text1 للثواني Text2 للدقائق Text3 للساعات ، وفي زر الأمر ضع الامر التالي :

كود :
My_Time = Text1 + ( Text2 * 60 ) + ( Text3 * 60 *60 )
Timer1.Enabled = True
وفي التايمر ضع الأمر التالي :

كود :
My_Time = My_Time - 1
If My Time <= 0 Then
Timer1.Enabled = False
Ring
End If
حيث Ring حدث تقوم أنت بوضعه حسبما تريد .
وعند زر Stop اكتب :

كود :
MsgBox DateTime.DateValue(Now + 2)
الثالث عشر : اضافة يوم - شهر - تاريخ ( إلى تاريخ معين ) - وكذلك الوقت .

نستخدم في ذلك الدالة DateValue ويمكننا أن نكتب قبلها DateTime. أولا لا كما نريد ... ومثال لاضافة يوم .

كود :
Text1.Text = DateAdd ( "اضافة إلى","العدد","اضافة")
الرابع عشر : جمع التواريخ وطرحها واضافة أيام وشهور إليها :

الصيغة العامة لأمر اضافة أيام هي ما يلي :

كود :
Text1.Text = DateAdd ("D",2,Now)
اضافة ( إما D للايام أو M للشهور أو YYY للأيام
فمثلاً لاضافة يومين إلى التاريخ الحالي :


Text1.Text = DateAdd ("D",2,Now)
وهكذا ...
أما لطرح تاريخين فمثلاً نكتب الأمر التالي


Msgbox DateDiff("M","12/11/2001","11/08/2003)
حيث M ليخرج الناتج بالشهور كما سبق

الخامس عشر : معرفة الشهر من السنة :

نستخدم الدالة MonthName بالشكل التالي


Msgbox MonthName(4)
وسيكون الناتج حسب النظام المعتمد من Vba

السادس عشر : أخرى :

الملف المرفق يحتوي على مجموعة من الأدوات والملفات والمشاريع المتعلقة بهذا الموضوع والتي حملتها من هذا المنتدى وغيره مع شكر خاص لاصحابها .
* طريقة استخراج اليوم - الشهر - السنة من التاريخ .
* عمل عداد عن طريق عمل مقارنة مع ساعة الويندوز .
* أداة لعمل ستوب ووتش .
* طريقة أخرى لعمل ساعة بعقارب .
وأجدد شكري لاصحابها مرة أخرى .

وأخيراً : فهذا الشرح قد لا يخلو من أخطاء أتمنى ممن يكتشف خطأ أو نقصاً أن يبنيه .

والسلام عليكم ورحمة الله وبركاته .


الملفات المرفقة
.zip   DateTime.zip (الحجم : 31.01 ك ب / التحميلات : 77)
}}}}
تم الشكر بواسطة: abulayth
#2
الف شكر
شـــايـفـــك

}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  سلسلة دروس الحماية ( للمبتدئين , المتوسطين , المتقدمين ) + تطبيقات جاهزة للاستخدام Ahmad Jawad 6 2,716 02-06-16, 11:45 AM
آخر رد: CLARO
  كل ما تريد معرفته عن الوقت a_senan 8 1,488 17-07-15, 01:23 PM
آخر رد: aziz2001
  كيفية التعامل مع دوال الوقت و التاريخ و كيفية تنسيقهما فى الفجوال بيسك 6 the viper 6 1,881 15-06-13, 08:17 PM
آخر رد: husain1980
  درس سريع - للمبتدئين التعامل مع App.path لتثبيت المسار RaggiTech 1 861 14-10-12, 02:18 PM
آخر رد: RaggiTech
  للمبتدئين - كيفية عمل Setup بالبرنامج المرفق مع الفيجوال بيسك RaggiTech 0 2,231 14-10-12, 02:00 PM
آخر رد: RaggiTech
  من المنتدى القديم - الأخطاء البرمجية RaggiTech 0 745 14-10-12, 01:57 PM
آخر رد: RaggiTech
  من المنتدى القديم - السلسلة الذهبية ... تمرير باميترات إلى داخل البرنامج من الويندوز RaggiTech 1 504 14-10-12, 01:54 PM
آخر رد: RaggiTech
  من المنتدى القديم - تشغيل الملفات RaggiTech 0 430 14-10-12, 01:47 PM
آخر رد: RaggiTech
  من المنتدى القديم - عمل امتداد ملفات خاص بك RaggiTech 1 677 14-10-12, 01:46 PM
آخر رد: RaggiTech
  من المنتدى القديم - كائن الطباعة للمبتدئين RaggiTech 0 531 14-10-12, 01:44 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم