PDA

View Full Version : خروج از حلقه



maleknasab
جمعه 07 آذر 1382, 20:51 عصر
با سلام
من دو دکمه فرمان بر روی فرم دارم
با کلیک بر روی دکمه اول برنامه وارد یک حلقه میشود در اینجا دو سوال دارم:
1-چگونه میتوانم با کلیک بر روی دکمه دوم از حلقه دکمه اول خارج شوم؟
2-چگونه میتوانم حالت فوق را با زدن یک کلید کیبورد مثلا اسکیپ انجام دهم؟

با تشکر

کم حوصله
شنبه 08 آذر 1382, 01:06 صبح
خوب با توجه به اینکه یک حلقه یک سری دستورات خاص هست که تکرار می شود می توانی یک خط شرط به آن اضافه کنی که مثلا بازدن کلیدی یا فشرده شدن دکمه ای برنامه شما آن را چک کرده و از ادامه کار جلوگیری کند


'General
Dim Bl As Boolean

private Sub Command2_Click
Bl=True
End Sub

private Sub Command1_Click
Bl=False
Do While 1
.
.
.
If Bl Then Exit Do
.
.
.
Loop

End Sub


:mrgreen:

روح اله معینی زاده
شنبه 08 آذر 1382, 07:15 صبح
سلام بر دوستان جرامی = گرامی

در حلقه اگه یک DoEvents هم اضافه کنید، بد نیست.

خسته نباشید بچه ها.

ساران سافت
شنبه 08 آذر 1382, 15:29 عصر
البته بعضی مواقع DoEvents سرعت را پایین می آورد. :wink:

maleknasab
شنبه 08 آذر 1382, 17:16 عصر
با سلام وتشکر از جواب شما
ولی درمورد این سوال مشکل من این است که زمانی که بر روی دکمه فرمان اول کلیک می کنم و برنامه وارد حلقه مربو طه میشود
دراین حالت فوکوس روی دکمه اول است و تا اتمام حلقه هیچ رویدادی از دکمه فرمان دوم دریافت نمی کند و من مجبورم برای اتمام برنامه
ctrl+break را بزنم
دوستان آیا راهی وجود دارد که من مشکلم را حل کنم؟
با تشکر

Farhad.B.S
شنبه 08 آذر 1382, 17:47 عصر
همانطور که Ruhollah عزیز گفتند شما باید از DoEvents استفاده کنید (در ابتدای حلقه)
این فرمان باعث میشه که در طی حلقه برنامه قادر به دریافت ورودی های کاربر باشه .



Do while i < 100
DoEvents
'Your code goes here !
Loop

maleknasab
یک شنبه 09 آذر 1382, 17:06 عصر
با سلام حضور تما م دوستان که به من کمک کردند
آقا تابع doevents
معجزه کرد و خیلی جالب بود حال میتوانم همینکار را با فشر دن یک کلید مثلا esc انجام دهم
لطفا یک مثال بزنید با تشکر مجدد

maleknasab
دوشنبه 10 آذر 1382, 18:56 عصر
با سلام
خودم راه حلش را پیدا کردم در این راه از یک تابع api استفاده کردم و به محض فشردن کلید esc از حلقه خارج می شوم اگر راه حل یا دستوری را می شناسید بگویید

'in General
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Const KEY_ESCAPE = &H1B
()Private Sub Command1_Click
"Text1.Text = "press escape to quit
()Do While DoEvents
If GetAsyncKeyState(KEY_ESCAPE) Then
"Text1.Text = "Escape pressed
Exit Sub
End If
Loop
End Sub

کم حوصله
دوشنبه 10 آذر 1382, 19:15 عصر
:shock: :shock: :shock: :roll:

ساران سافت
سه شنبه 11 آذر 1382, 10:52 صبح
آفرین. :lol: :lol: :lol: