PDA

View Full Version : سوال: توابع تاخیر در vb (کمک فوری)



//mohammad
یک شنبه 02 آبان 1389, 11:56 صبح
با سلام به اساتید

من در قسمتی از برنامه ام دو for تو در تو استفاده کردم. من میخواهم زمانی که کار for داخلی تمام شد، وقفه ای را ایجاد کنم سپس دوباره وارد for داخلی شوم.

از تابع api sleep استفاده کردم اما یه مشکل داره : مشکل این است که زمانی for ها اجرا میشن،دستوراتی را که برای تغییرات در فرم ها نوشتم ، به خاطر تابه sleep نمایش نمیدهد. مثلا
text1.text=""

توابع و یا روش هایی که می توان تاخیر 300 mm ایجاد کرد چیست؟؟؟؟؟:گریه:
در سایت جست و جو کردم و تابعی ندیدم!

butterfly8528
یک شنبه 02 آبان 1389, 14:02 عصر
سلام دوست عزیز .

این هم روشی برای تاخیر بدون استفاده از Api


Public Sub Pause(interval)
Dim X
X = Timer
Do While Timer - X < Val(interval)
DoEvents
Loop
End Sub


Private Sub Command1_Click()
Call Pause(5)
MsgBox "Arshamsoft"
End Sub

موفق باشید .

//mohammad
یک شنبه 02 آبان 1389, 16:10 عصر
با سلام
در مورد عبارت Timer در تکه کد بالا بیشتر توضیح دهید.

یعنی vb با این همه عظمت تابع تاخیر ندارد؟؟؟

butterfly8528
یک شنبه 02 آبان 1389, 16:31 عصر
در مورد عبارت Timer در تکه کد بالا بیشتر توضیح دهید.

Timer زمان بالا اومدن ویندوز رو بر حسب میلی ثانیه نشون میده .


یعنی vb با این همه عظمت تابع تاخیر ندارد؟؟؟

نخیر

موفق باشید .

//mohammad
یک شنبه 02 آبان 1389, 19:09 عصر
تکه کد جالبی است تشکررررر
فقط اگر میشه توضیح کامل تری دهید تا کاملا متوجه شوم

X = Timer
Do While Timer - X < Val(interval)
DoEvents
Loop

چرا دو مقدار تایمر در فاصله یک خط تفاوت می کند
و حکمت تاخیر دقیقا معادل عدد interval چیست؟؟

خواهشا خط به خط تریس کنید
تشکر فراوان:تشویق:

//mohammad
یک شنبه 02 آبان 1389, 19:11 عصر
دوستان اگر توابع دیگری دارند قرار بدن تا بیشتر آشنا شویم

butterfly8528
دوشنبه 03 آبان 1389, 00:31 صبح
دوست عزیز کد بسیار ساده هست .

X = Timer
در ابتدا متغیر X با زمان فراخوانی تابع یعنی Timer مقدار دهی میشه .

Do While Timer - X < Val(interval)
DoEvents
Loop

سپس با استفاده از یک حلقه، مدام حاصل تفریق X و Timer جاری ،با مقدار ورودی تابع ( interval ) مقایسه میشه:

اگر حاصل تفریق کوچکتر از مقدار ورودی تابع بود، حلقه یک بار دیگه تکرار میشه.

اما اگه حاصل تفریق بزرگتر یا مساوی مقدار ورودی تابع بود،حلقه به پایان رسیده و باقی کدها اجرا می شوند .

DoEvents هم از هنگ کردن برنامه جلوگیری میکنه .


برای درک بهتر توضیحات داده شده کد زیر رو ملاحضه بفرمایید :


Public Sub Pause(interval)
Dim X

X = Timer
Do While Timer - X < Val(interval)
Me.Cls
Print " Zamane Separi Shode = " & Round(Timer - X), , "Zamane Moayan Shode = " & Val(interval)
DoEvents
Loop
End Sub


Private Sub Command1_Click()
Me.AutoRedraw = True
Me.FontSize = 8
Me.FontBold = False
Me.ForeColor = vbBlack

Call Pause(4)

Me.FontSize = 24
Me.FontBold = True
Me.ForeColor = vbRed
Print " Arshamsoft"

End Subموفق باشید .