الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

خطا عند استخدام التايمر

بدأه الحلم الواعد في 24 مارس 2011 · 17 رد · 1,029 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اعمل على برنامج يحتوي على عدد من الـform وواجهة للدخول login form

اريد ان اجعل واجهة الدخول تظهر بعد مرور فتره زمنيه معينه (نصف ساعه مثلا ) عند عدم فعل اي حدث في باقي الفورمات

استخدمت تايمر ووضعته في احد الفورمات وكتبت كود اخفاء الفورم وظهور فورم الدخول

المشكله :

المشكله ان التايمر بعد تسجيل الدخول مره اخرى لا ينتظر نفس الفتره الزمنيه المحدده وكذك يستمر عمل التايمر على باقي الفورمات

ايضا كيف اجعل فورم الدخول تظهر فقط بعد نصف ساعه من عدم فعل شي في الفورم اللي انا موجود فيه

اتمنى مساعدتي (حاولت ان اوضح المشكله قدر الامكان)

وشكرا..

#2

السلام عليكم

لو ممكن الكود كى احاول مساعدتك

163374357.gif

#3

هذا مثال بالسورس كود ارفقته لك

أرجو أن يلبي طلبك

تحياتي

IdelTime.zip

#4

جُزيتم خيرا واعتذر لكم عن عدم الرد ...وذلك بسبب عدم توفر الانترنت

شكرا لكم..

#5

اخي maaq6

اقدر لك مجهودك المبذول كثيرا ولكني بصراحه لم افهم الاكواد وكذلك عند التجربه وجدت ان نفس المشكله موجوده وهي

ان الرساله تظهر بفترات غير متساويه ...لك جزيل الشكر في مجمل الاحوال

sayedf1

الشكر موصول لك ايضا واقدر اهتمامك

لقد ارفقت المثال اتمنى ان تتضح الصوره

المشكله اللتي اريد معالجتها هي اني اريد صفحة الدخول تظهر بعد مرور عشر دقائق مثلا من عدم فعل اي حدث على الفورم الحاليه (كأنها شاشه مؤقته لكل الفورمات بعد مرور 10 دقائق)

اشكر لكم تفاعلكم

timer example.rar

#6

اسف على تأخرى لقد حملت المثال وسوف اتطلع علية حالاً

163374357.gif

#7

السلام عليكم

اولاً:

غير قيمة ال timer الى 100

ثم انسخ هذا الكود فى ال form1

Dim time_naw, time_Delay As Date
Private Sub Command1_Click()
Me.Hide
Form2.Show
End Sub
Private Sub Form_Load()
time_naw = Time
time_Delay = Time + TimeValue("00:10")
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
time_naw = Time
time_Delay = Time + TimeValue("00:10")
End Sub
Private Sub Timer1_Timer()
time_naw = Time
If Time = time_Delay Then
Me.Hide
Form3.Show
End If
End Sub

163374357.gif

#8

بالعكس انا اللي اتاخرت بالرد انت مشكور في كل الاحوال اخي الكريم

ان شاء الله بجرب وارد لك خبر

واعذرني على التاخير..

#9

السلام عليكم

اخي الكريم .. اولا اكرر شكري لك

انا طبقت الكود وفعلا طبق

ولكني لم افهم الكود جيدا هل من الممكن ان تشرح الكود لي ؟

سؤال اخر اذا سمحت

هل اكرر هذا الكود في كل الفورمز وهل استخدم نفس التايمر في كل فورمز او انشئ تايمر جديد في كل فورم على حده

؟؟

شكرا لك..

تم تعديل هذه المشاركة بواسطة الحلم الواعد في 4 أبريل 2011 في 23:30

#10

بامكانك استخدام الطريقة التالية

اعمل فورم جديد

ضع به timer

وضع به الكود التالي :

Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Declare Function GetLastInputInfo Lib "user32" (plii As Any) As Long
Private Type LASTINPUTINFO
cbSize As Long
dwTime As Long
End Type


Private Sub Timer1_Timer()
Dim lii As LASTINPUTINFO
lii.cbSize = Len(lii)
Call GetLastInputInfo(lii)
Dim idleInMin As Long
idleInMin = ((GetTickCount() - lii.dwTime) / 60000)

if idleInMin >=30 then
'show login
end if 


End Sub

عند تشغيل البرنامج شغل هذا الفورم واخفه formx.hide

وهكذا تحصل على ماتريد .

#11

اخي الكريم tareqVB

اشكرك على الرد

ولكن هل تقصد ان اكمل على البرنامج السابق او اعمل بروجكت جديد واجرب الطريقه..

وشكرا..

#12
الحلم الواعد كتب:

السلام عليكم

اخي الكريم .. اولا اكرر شكري لك

انا طبقت الكود وفعلا طبق

ولكني لم افهم الكود جيدا هل من الممكن ان تشرح الكود لي ؟

سؤال اخر اذا سمحت

هل اكرر هذا الكود في كل الفورمز وهل استخدم نفس التايمر في كل فورمز او انشئ تايمر جديد في كل فورم على حده

؟؟

شكرا لك..

وعليكم السلام

الشكر لله الذى علم الأنسان ما لم يعلم

فكرة الكود هى

انشاء متغير لتخذين الوقت الحالى (معتمد على ساعة الجهاز)

ومتغير اخر ليحمل قيمة الوقت الحالى + المده التى تريد ان ينتظرها البرنامج بالدقائق

التيمر لأختبار قيمة المتغيران كل ثانيه

وان لم تضح الفكره اشرح لك الكود بتفصيل

163374357.gif

#13
اقتباس
ولكن هل تقصد ان اكمل على البرنامج السابق او اعمل بروجكت جديد واجرب الطريقه..

اضف فورم جديد الى نفس المشروع او اذا كان عندك mdiform ضع هذا الكود به او ان وجد عندك فروم يبقى شغال دائما ضع الكود به .

#14

الاخ الفاضل sayedf1

لقد اتعبتك معي كثيرا ...ولكن اخر سؤال timer interval لماذا وضعناها 100 ؟؟

الاخ الفاضل TareqVB

ممكن اعرف الكود اللي اضفته ايش بيضيف على البرنامج..

وشكرا لكم..

#15
الحلم الواعد كتب:

اخر سؤال timer interval لماذا وضعناها 100 ؟؟

ال 100 تعنى ثانيه

كى يعمل الtimer كل ثانيه

وكل ما زاد هذا الرقم زادت المده

ملحوظه:

مشكلة التيمر انه يتأثر بعمل البرنامج اى ان الوقت الذى تحدده لا يكون دقيقاً ولذلك اعتمدت على ساعه الجهاز

تقبل تحياتي

163374357.gif

#16
اقتباس
ممكن اعرف الكود اللي اضفته ايش بيضيف على البرنامج..

لمعرفة الوقت الذي لم يستخدم به البرنامج يعني كما هو مطلوب في سؤالك .

اقتباس
ال 100 تعنى ثانيه

عذرا اخي sayedf1 بل ال 1000 تشير الى الثانية لان الوحدة هي millisecond .

#17
اقتباس
عذرا اخي sayedf1 بل ال 1000 تشير الى الثانية لان الوحدة هي

اسف على الخطء

وشكرا على التصحيح

تم تعديل هذه المشاركة بواسطة sayedf1 في 7 أبريل 2011 في 16:29

163374357.gif

#18

لكم مني جزيل الشكر

بصراحه تفاعل رائع

...

لكم ودي...

مواضيع مشابهة