استكمالاً لما سبق في النموذج Home 👆 :-
نستكمل العمل لضبط الوقت المتبقي لكل صلاة خلال اليوم ، بحيث عندما يحين موعد صلاة الظهر مثلاً يتغير الوقت لإحتساب الوقت المتبقي لصلاة العصر ( وقت تنازلي ) . وهذا العمل من شأن حدث On Timer وعليه فإننا سنخبره انه مقارنة مع الوقت الحالي كم تبقى لحين موعد صلاة الفجر ( على سبيل المثال ) ؟ فسيقوم الكود التالي بحساب جملة الأوقات لكل صلاة وإدراجها في مربع النص الذي سنتحدث عنه وغيره فيما يلي :-
✨ مربع النص Txt_Pry_Name = عرض اسم الوقت الحالي للصلاة ( فجر , ظهر , عصر , مغرب , عشاء ) .
✨ مربع النص Txt_Time_Count = هنا سيتم عرض الوقت المتبقي لكل صلاة بالتنسيق ( 00:00 بعداد تنازلي ) . وحين يتبقى دقيقة واحدة على موعد الأذان سيصبح العداد الزمني بهذا التنسيق ( 00:00:59 ) ويبدأ بالنزول كل ثانية إلى حين موعد الأذان التالي فسيعود إلى التنسيق السابق ( 00:00 ) .
طبعاً حالياً سيتم عرض رسالة عادية فقط عند دخول وقت الصلاة مفادها : ( "حان الآن موعد أذان الفجر" ) . وهذا الكود الذي سيقوم بالمهام التي ذكرتها لكم
Private Sub Form_Timer()
On Error Resume Next
Dim tfajr As Date, tzohr As Date, tasr As Date, tmagrib As Date, tisha As Date
Dim dt As Integer
Dim currentTime As Date, nextPrayerTime As Date, timeLeft As Date
Dim hoursLeft As Integer, minutesLeft As Integer, secondsLeft As Integer
Dim fajrTime As Date, Country_Name As String
If Me.daylight = True Then
dt = 1
Else
dt = 0
End If
tfajr = GetTimes(Me.longitude, Me.latitude, Me.timezone, "fajr", Me.tx, dt, Date)
currentTime = Time
fajrTime = CDate(Me.fajr)
Country_Name = DLookup("[city_name]", "City", "ID=" & [city_name])
If currentTime < fajrTime Then
Txt_Pry_Name.Value = "الفجر"
nextPrayerTime = fajrTime
Else
Txt_Pry_Name.Value = "الفجر"
nextPrayerTime = DateAdd("d", 1, fajrTime)
End If
If currentTime < nextPrayerTime Then
timeLeft = nextPrayerTime - currentTime
Else
timeLeft = DateAdd("h", 24, nextPrayerTime) - currentTime
End If
hoursLeft = Hour(timeLeft)
minutesLeft = Minute(timeLeft)
secondsLeft = Second(timeLeft)
If Me.Txt_Time_Count = "00:00" Then
Me.Txt_Time_Count = "00:00:59"
Me.Txt_Time_Count = Format(hoursLeft, "00") & ":" & Format(minutesLeft, "00") & ":" & Format(secondsLeft, "00")
Else
Me.Txt_Time_Count = Format(hoursLeft, "00") & ":" & Format(minutesLeft, "00")
End If
Me.Caption = Country_Name & " " & "بقي لصلاة " & Txt_Pry_Name & " " & Txt_Time_Count & " تقريباً" & " ، في مدينة "
If Time() = tfajr Then
MsgBox "حان الآن موعد أذان الفجر", , ""
End If
End Sub
Salawat.accdb
يتبع ... 👈