منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : العد التنازلي عام - شهر - يوم - ساعة - دقيقة - ثانية
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم ورحمة الله وبركاته

كل عام وانتم بخير
اصبح شهر رمضان ايام قليلة

فاحببت ان انشاء كود يفيد الجميع
وهو كود العد التنازلي 

وبما ان رمضان على ايام وبعض الساعات
ففكرة الكود ستكون على شهر رمضان
وسيتم بعد شرح كيفية استخدامه بشكل عام عن اى شئ اخر

فى البداية قم بانشاء هذا الـ Function
كود :
   Public Shared Function CountDown(fromDate As Date, Optional toDate As Date = Nothing) As String()
       Dim years As Integer = 0, months As Integer = 0, days As Integer = 0
       Dim hour As Integer = 0, minute As Integer = 0, second As Integer = 0
       If toDate = Nothing Then toDate = Date.Now
       Do Until toDate.AddYears(-1) < fromDate
           years += 1
           toDate = toDate.AddYears(-1)
       Loop
       Do Until toDate.AddMonths(-1) < fromDate
           months += 1
           toDate = toDate.AddMonths(-1)
       Loop
       Do Until toDate.AddDays(-1) < fromDate
           days += 1
           toDate = toDate.AddDays(-1)
       Loop
       Do Until toDate.AddHours(-1) < fromDate
           hour += 1
           toDate = toDate.AddHours(-1)
       Loop
       Do Until toDate.AddMinutes(-1) < fromDate
           minute += 1
           toDate = toDate.AddMinutes(-1)
       Loop
       Do Until toDate.AddSeconds(-1) < fromDate
           second += 1
           toDate = toDate.AddSeconds(-1)
       Loop
       Return New String() {years, months, days, hour, minute, second}
   End Function

الان قم بانشاء Timer
وقم بضبط الاعدادا للتفعيل العمل وعن مدة 1000

الان قم بادراج الكود التالى داخل حدث الـ Timer
كود :
       Dim arSA As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("ar-SA")
       arSA.DateTimeFormat.Calendar = New System.Globalization.HijriCalendar()
       Dim DateRamadan = Date.ParseExact("01/09/1440", "dd/MM/yyyy", arSA)
       Dim GetCountDown As String() = CountDown(Date.Now, DateRamadan)
       With TextBox1
           .Text = "متبقى "
           .Text += GetCountDown(2) & " يوم و "
           .Text += GetCountDown(3) & " ساعة و "
           .Text += GetCountDown(4) & " دقيقة و "
           .Text += GetCountDown(5) & " ثانية."
       End With

لاحظ وجود تاريخ 
PHP كود :
01/09/1440 

فيمكنك ان تعدل عليه الى اى تاريخ كما تريده

طيب الان هذا الكود فى حدث الـ Timer
يخص التاريخ الهجري والتعامل معه

ماذا اذا كان المطلوب هو تاريخ ميلادى
وكذلك ظهور العام والشهر المتبقي

فكل ما عليك فعله هو استخدام الكود بهذا الشكل
كود :
       Dim GetCountDown As String() = CountDown(Date.Now, "20/12/2020")
       With TextBox1
           .Text = "متبقى "
           .Text += GetCountDown(0) & " عام و "
           .Text += GetCountDown(1) & " شهر و "
           .Text += GetCountDown(2) & " يوم و "
           .Text += GetCountDown(3) & " ساعة و "
           .Text += GetCountDown(4) & " دقيقة و "
           .Text += GetCountDown(5) & " ثانية."
       End With

لاحظ الفرق بين الكودين
حيث الكود الاول لحدث الـ Timer 
وهو للتعامل مع التاريخ الهجري

وحيث الكود الثاني لحدث الـ Timer
فهو للتعامل مع التاريخ الميلادي

الان ماذا يمكن اى شخص الاستفادة من هذا الكود
خلاف فكرة الايام والساعات المتبقية عن الشهر المبارك شهر رمضان

احيانا منا من يقوم بعمل مدة تجريبية
أو تفعيل البرنامج لمدة محددة كالاشتراكات

بهذا الكود يمكنك الاستفادة منه
فى عرض المدة المتبقية اذا كان عن الفترة التجريبية
وكذلك عن المدة المتبقية لاعادة تجديد الاشتراك
وكذلك الاعمال التى تخص المواعيد الشخصة / الاجتماعات / الرحلات والعروض ....

وغيرها كثيراً من الاستخدام
بات الامر الان معك فى استخدام الكود

واتمنى ان ينال الكود للجميع

تحياتى لكم جميعاً
ورمضان مبارك علينا وعلى الجميع بكل خير
وتمنياتى لكم التوفيق الدائم
السّلام عليكم و رحمة الله و بركاته
عمل رائع أخي الغالي ELGOKR .. و متقن و منظّم و دقيق الحساب و مفيد للكثير من التطبيقات و الأفكار حتّى لمواعيد و إجتماعات
بلّغنا الله و إيّاك و كل المسلمين .. شهر رمضان لهذا العام و لسنوات عديدة إن شاء الله بالصحة و الهناء و العافية و راحة البال و قربى من الله سبحانه و تعالى
تحياتي و تقييماتي
وعليكم السلام ورحمة الله وبركاتة


الله يعطيك الصحة والعافية

وتقبل الله منا ومنكم صالح الاعمال


بارك الله فيك وبك

+1
(22-04-19, 05:02 PM)عبد العزيز البسكري كتب : [ -> ]
السّلام عليكم و رحمة الله و بركاته
عمل رائع أخي الغالي ELGOKR .. و متقن و منظّم و دقيق الحساب و مفيد للكثير من التطبيقات و الأفكار حتّى لمواعيد و إجتماعات
بلّغنا الله و إيّاك و كل المسلمين .. شهر رمضان لهذا العام و لسنوات عديدة إن شاء الله بالصحة و الهناء و العافية و راحة البال و قربى من الله سبحانه و تعالى
تحياتي و تقييماتي

وعليكم السلام ورحمة الله وبركاته
الحمد لله والشكر لله
والحمد لله على كل حال

تقبل الله منك الدعاء لى ولك وللجميع بامر الله
وكل عام وانت والاسرة دائماً بخير

تحياتى لك
وتمنياتى لك التوفيق

(22-04-19, 10:52 PM)sendbad100 كتب : [ -> ]
وعليكم السلام ورحمة الله وبركاتة


الله يعطيك الصحة والعافية

وتقبل الله منا ومنكم صالح الاعمال


بارك الله فيك وبك

+1

اللهم امين لى ولك وللجميع يارب
شكراً اخى sendbad100

والشكر لله دائماً على كل حال
وكل عام وانت والاسرة دائماً بخير

تحياتى لك
وتمنياتى لك التوفيق
السلام عايكم و رحمة الله و بركاته
أخي الكريم الغالي ELGOKR
لو تكرمت باكمال جميل أعمالك بوضع التاريخ في متغير بدل الكود حتى يتمكن الواحد منا بتغييره حسب الحدث أو الموعد الذي يريده
أنا قمت بعمل ذلك لكن المشكلة هي :
لو عملتها بمشروع جديد كل شيء طبيعي و عادي و ليس بالأمر أي خلل
أنقل حرفيا ما عملته بالمشروع الجديد الى مشروعي الخاص .. ينتج لدي هذا الخطأ
Convert from string to type date is not valid
غيرت قيمة التاريخ بالجدول الى نصي او تاريخ لكن بدون فائدة
الخطأ بالسطر Get countDown
ما عملته هو
Dim Ddate as string = TextBox2.Text
و غيرتها الى as Date
مع مراعاة قيمة الجدول
جلبت قيمة التاكست 2 الى الفورم ....الخ
أردت الاستفادة من طريقتك لو تكرمت لعلها تفيد بدون خطأ ان شاء الله
تحياتي
مرحباً اخى عبدالعزيز البسكري

بخصوص هذا الجزء
كل ما عليك فعله هو التالى
كود :
Dim Ddate as Date = CDate(TextBox2.Text)

ومن ثم وضع Ddate بدل التاريخ
وسيتم عمل الكود بدون مشكلة
وكذلك بدون ظهور تلك الرسالة بامر الله

تحياتى لك
وتمنياتى لك التوفيق
بارك الله فيك و لك و جزاك خير الجزاء ان شاء الله
سأجرب عمل ذلك و أخبرك بالنتيجة
تحياتي واحتراماتي
السّلام عليكم و رحمة الله و بركاته
شوف أخي الغالي ELGOKR لو سمحت المرفق أدناه .. يشتغل بطريقة جيدة و لله الحمد .. لكن عند نقل هذا الملف تماما مثلما هو للمشروع الخاص .. يظهر لدي الخطأ التالي و الإشارة إلى هذا السّطر ..
كود :
Convert from String to Type Date is not valid


كود :
Dim GetCountDown As String() = CountDown(Date.Now, "" & CDate(TextBox2.Text) & "")

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

من الواضح تماماً انك بتترك اداء TextBox فارغ
اى انه بدون قيمة تاريخ  Big Grin

طيب سؤالى لك كده وانت تبتسم وانا بخمن ما يحدث معك
وبدون ان اقوم بتحميل المرفق ولا الاطلاع عليه

لما تقول تاريخ 0 يعنى انت مقتنع انه تاريخ
الفارغ يعنى 0 فكيف يصبح تاريخ

وبما انك وقعت بهذا الامر
وبما اننا نستخدم Timer والتحديث كل ثانية
وقد يكون المستخدم يكتب تاريخ مثل 25/4 
وليم يستكمل الباقي واتى عليه مدة تحديث Timer
تفتكر ده كده تاريخ  Big Grin

خد خد تعال هنا شايفك وانت بتضحك

الحل الامثل ولتجنب تلك المشكلة هو استخدام اداء
PHP كود :
DateTimePicker 

سيجعل المستخدم حرية اختيار التاريخ دون استعجال
وكذلك لن يحدث مشكلة الخطاء كما تشير اليه
وكذلك سيتجنب فكرة ان المستخدم لم يستكمل كتابة التاريخ فى لحظة تحديث Timer

جرب كده والابتسامة عليك وقول انى صح  Tongue

على فكرة اللى مخليني متاكد من كلامى صح هنا
إقتباس :
Convert from String to Type Date is not valid
ويعنى انه فارغ بدون اى قيمة بكل تاكيد لانك اكيد مش هتكتب نص بدل التاريخ  Wink

جرب كما قلت لك استخدام وستحل تلك المشكلة
PHP كود :
DateTimePicker 

تحياتى لك
وتمنياتى لك التوفيق
السلام عليكم و رحمة الله و بركاته
أضحكتني فعلا أخي الحبيب ELGOKR أضحك الله سنك
لكن تخمينك .. طلع .. نص ..نص
شوف يا غالي الفكرة التي أعمل عليها ..
عندي بالمشروع فورم خاص ببعض الاعدادات العامة من بينها ..
اسم مركز الامتحان
رمز مركز الامتحان و اسم رئيس المركز و بعض البيانات الأخرى
لما و جدت موضوعك الرائع بصراحة
خطرت ببالي فكرة اضافة تاريخ يوم الاجراء
ليعمل كمنبه بالشاشة الرئيسية كم بقي على موعد الامتحان الرسمي
يعني التاريخ الموجود بالتكست بكس رقم 2 سيكون تغييره بفورم الاعدادات العامة و قمت بوضعه يدويا أول مرة بالجدول
ليتم التعامل معه بعد ذلك من خلال الفورم المذكور فقط.
أصارحك أخي .. الشاشة الرئيسية بها بعض أكواد التواريخ باستخدام Globalization .. و لذلك سأمسح تدريجيا البعض منها و التجربة لعلها تضبط ان شاء الله
تحياتي و تشكراتي
الصفحات : 1 2