السلام عليكم اخواني
انا مبتدئ في الفيجول بيسك6
وواجهتني صعوبات مع الوقت والتاريخ أهمها :
عندي مربع نص ( text1.text اريد المستخدم أن يدخل تاريخ ما ( باليوم والشهر والسنه )
وفي مربع نص ثاني يدخل رقم معين يمثل عدد ايام وتظهر النتيجه عند ضغط زر كوماند جمع عدد
الايام مع التاريخ مثال
التاريخ 28 / 12 / 2013 + 7 ايام = ؟
ايضا اريد عداد وقت تصاعدي يبدأ من الصفر ويحسب إلى 60 ثانيه ثم يضيف هذه الثواني إلى الدقائق وإذا وصل 60 دقيقه يضيفها كذلك إلى الساعات
شكرا لكم جزيلا
اضافة عدد ايام إلى تاريخ ما
السلام عليكم...
إجابة السؤال الأول: نفرض أنه توجد 3 مربعات نص: Text1 للتاريخ، Text2 لعدد الأيام المضافة (أو المطروحة)، Text3 للناتج.
Private Sub Command1_Click()
Dim MyDate As Date
Dim Interval As Long
If Not IsDate(Text1.Text) Then
MsgBox "الرجاء إدخال التاريخ بشكل صحيح"
Text1.SetFocus
ElseIf Not IsNumeric(Text2.Text) Then
MsgBox "الرجاء إدخال عدد الأيام بشكل صحيح"
Text2.SetFocus
Else
MyDate = CDate(Text1.Text)
Interval = CLng(Text2.Text)
MyDate = DateAdd("d", Interval, MyDate)
Text3.Text = CStr(MyDate)
End If
End Subإذا أدخلت في خانة عدد الأيام (Text2) عدداً سالباً فسوف يحسب التاريخ نحو الماضي، أي يطرح الأيام من التاريخ.
وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ
صدق الله العظيم
السلام عليكم...
إجابة السؤال الثاني: ضع على الـ Form ثلاث Labels بجانب بعضها: Label1 للثواني، Label2 للدقائق، Label3 للساعات. و أضف 2 من الـ CommandButtons.
و أخيراً أضف Timer و اضبط الخاصية Enabled له على False و الخاصية Interval على 1000.
انسخ الكود التالي و ألصقه كما هو:
Private Sub Command1_Click()
Timer1.Enabled = False
Label1.Caption = "00"
Label2.Caption = "00"
Label3.Caption = "0"
End Sub
Private Sub Command2_Click()
Timer1.Enabled = Not Timer1.Enabled
End Sub
Private Sub Form_Load()
Command1.Caption = "إعادة ضبط"
Command2.Caption = "تشغيل/إيقاف"
Command1_Click
End Sub
Private Sub Timer1_Timer()
Dim H As Long, M As Long, S As Long
S = CLng(Label1.Caption)
M = CLng(Label2.Caption)
H = CLng(Label3.Caption)
S = S + 1
If S = 60 Then
S = 0
M = M + 1
If M = 60 Then
M = 0
H = H + 1
End If
End If
Label1.Caption = Format(S, "00")
Label2.Caption = Format(M, "00")
Label3.Caption = CStr(H)
End Subوَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ
صدق الله العظيم
مشكور اخي الكريم
زادك الله علما وتواضعا ونفع بك
الكود شغال ومضبوط بعد التجربه وأتمنى
افهم كل خطوات الكود فالقصد من السؤال المعرفه وتنمية مهاراتي البرمجيه حتى أستطيع مستقبلا تصميم برنامجي الخاص وهذه بعض الخطوات التي لم أفهمها
Dim Interval As Long
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
Not IsDate - Text1.SetFocus - IsNumeric - CDate - CLng - CStr
ــــــــــــــــــــــــــــــــــــــــــــــــ
اما الكود الثاني فلم افهم مايلي :-
Timer1.Enabled = Not Timer1.Enabled
انا اعرف اني ثقلت عليكم لكن كما تعرفون صاحب الحاجه ارعن , واحسن الناس أنفعهم للناس
بارك الله فيكم جميعا
ـــــــــــــــــــــــــــــــــــــــــــــــــــــ
السلام عليكم...
مرحباً بك على كل حال...
1. جملة Dim هي جملة للتصريح عن متغير و تحديد نوعه. و صيغتها العامة المختصرة كالتالي:
Dim اسم_المتغير As نوع_المتغير
مثلاً:
Dim Salary As Single Dim Interval As Long Dim MyVar1 As Variant Dim MyVar2
فالجملة الأولى تعرف متغيراً اسمه Salary و نوعه Single.
و الجملة الثانية تعرف متغيراً اسمه Interval و نوعه Long.
و الجملة الثالثة تعرف متغيراً اسمه MyVar1 من النوع Variant الذي يقبل أي نوع من البيانات.
و الجملة الرابعة تعرف متغيراً اسمه MyVar2 و لكن مانوعه؟ - إذا لم نحدد نوع المتغير (لم نستعمل As و ما بعدها) فإن المتغير يكون من النوع المتنوع (Variant) و هذا يعني أن كلمة As و النوع اختياريان.
2. في VB6 هناك مجموعة من دوال التحزيل، و هي كالتالي:
* الدالة CStr: تحول التعبير الممرر إليها إلى String.
* الدالة CLng: تحول التعبير الممرر إليها إلى Long.
* الدالة CInt: تحول التعبير الممرر إليها إلى Integer.
* الدالة CSng: تحول التعبير الممرر إليها إلى Single.
* الدالة CDbl: تحول التعبير الممرر إليها إلى Double.
* الدالة CDate: تحول التعبير الممرر إليها إلى Date.
مثلاً إذا كان لدينا تاريخ مكتوب في مربع نص. نحن ننظر إليه كتاريخ، لكن البرنامج ينظر إليه كمجرد نص (String). و عندما تريد من البرنامج أن يعامل ذلك الـ String كتاريخ فإننا نحوله إلى تاريخ:
Dim MyDate As DateMyDate = CDate(Text1.Text)
و مثلاً أيضاً لو كان عندي مربعا نص فيهما درجتان لطالب - مثلاً 65.5 و 85.0 - فالبرنامج ينظر إليهما كنص عادي (String) و إذا كتبنا:
Text3.Text = Text1.Text + Text2.Text
فإننا سنحصل في Text3 على 65.585.0 أي أنه سيضم النصين معاً، و هذه نتيجة خاطئة. هنا نحتاج أيضاً إلى دوال التحويل:
Dim Mark1 As Single Dim Mark2 As Single Dim Total As Single Mark1 = CSng(Text1.Text) Mark2 = CSng(Text2.Text) Total = Mark1 + Mark2 Text3.Text = CStr(Total)
أو باختصار:
Text3.Text = CStr(CSng(Text1.Text) + CSng(Text2.Text))
3. دوال التأكد من النوع:
* الدالة IsNumeric تتأكد من أن القيمة الممررة لها تمثل عدداً مقبولاً أم لا. إذا كانت القيمة عبارة عن عدد فإن الدالة تعيد True و إلا فإنها تعيد False.
* الدالة IsDate تتأكد من أن القيمة الممررة لها تمثل تاريخاً مقبولاً أم لا. إذا كانت القيمة عبارة عن تاريخ صحيح فإن الدالة تعيد True و إلا فإنها تعيد False.
مثلاُ:
If IsDate(Text1.Text) then
تعني: إذا كان النص المكتوب في المربع Text1 يمثل تاريخاً صحيحاً إذن...
و بالمثل
If Not IsDate(Text1.Text) then
تعني: إذا لم يكن النص المكتوب في المربع Text1 يمثل تاريخاً صحيحاً إذن...
4. الوظيفة SetFocus موجودة في العديد من المكونات و ليس في الـ TextBox فقط. و هي تعني: ضع التركيز (أو البؤرة أو المؤشر) في العنصر أو المكون المذكور.
5. عكس القيم المنطقية:
الجملة Timer1.Enabled = Not Timer1.Enabled تعمل على تغيير حالة المؤقت (الـ Timer) فإذا كان شغالاً توقفه و إذا كان متوقفاً تشغله. المسألة بسيطة: الخاصية Enabled من النوع Boolean (المنطقي) أي تقبل قيمتين فقط هما: True (فيكون المؤقت شغالاً) أو False (فيكون المؤقت متوقفاً) و بالتالي عندما نريد فقط تبديل الحالة فإنه يكفي أن نعكس الحالة السابقة باستعمال العامل Not.
6. نرجو الاستفادة و السلام.
وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ
صدق الله العظيم
الله يحفظك من كل شر ويوفقك لكل خير كفيت ووفيت
شرح رائع ومتكامل بارك الله فيك
هذا الموضوع مغلق.