امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
توقف یک روال
نویسنده پیام
seyyed آفلاین
كاربر دو ستاره
**

ارسال‌ها: 72
موضوع‌ها: 27
تاریخ عضویت: اردیبهشت ۱۳۸۴

تشکرها : 1
( 2 تشکر در 2 ارسال )
ارسال: #1
توقف یک روال
سلام
فرض کنیم برای یه دکمه کدی مثل کد زیر رو نوشتیم:
کد:
for i = 1 to 1000000
DoEvent
....
....
....
next i
حالا فرض کنیم این روال در حال اجراست و ما می خوایم
با فشردن یک دکمه اجرای اون روال رو کلا متوقف کنیم
چه باید کرد؟؟؟؟؟؟؟؟؟؟؟




.
۱۸-اردیبهشت-۱۳۸۵, ۱۵:۱۶:۵۶
وب سایت ارسال‌ها
پاسخ
Darg غایب
مدير بازنشسته
*****

ارسال‌ها: 894
موضوع‌ها: 40
تاریخ عضویت: تير ۱۳۸۴

تشکرها : 381
( 702 تشکر در 190 ارسال )
ارسال: #2
RE: توقف یک روال
برای چه کاری احتیاج داری ؟
آخه نسبت به مورد استفادت کارهای مختلفی میشه انجام داد !
کد زیر تنها یک راه حله:

کد:
Sub Command1_Click()
Command1.Tag="Stop"
End Sub

For I=1 to 1000000
IF Command1.Tag="Stop" then Exit For
DoEvents
Next I
(آخرین ویرایش در این ارسال: ۱۸-اردیبهشت-۱۳۸۵, ۱۶:۱۷:۲۹، توسط Darg.)
۱۸-اردیبهشت-۱۳۸۵, ۱۶:۰۷:۴۰
وب سایت ارسال‌ها
پاسخ
Mohandese_Javan آفلاین
در حال پیشرفت
***

ارسال‌ها: 345
موضوع‌ها: 90
تاریخ عضویت: فروردین ۱۳۸۴

تشکرها : 1
( 39 تشکر در 23 ارسال )
ارسال: #3
RE: توقف یک روال
سلام!
توقف یک روال یا یک حلقه؟
همون طور که دوستمون گفتند مثلا برای خروج از حلقه For دستور Exit For
این کارو میکنه. شما تو حلقه دستوری مینویسی که هر دفعه که حلقه اجرا میشه فشرده شدن کلید از صفحه کلید رو چک میکنه .رو کدش شرط میزاری که کدوم کلید بود خارج بشه.
اگه میخوای از روال یا Sub خارج بشی دستور Exit Subرو استفاده کن.
۲۰-اردیبهشت-۱۳۸۵, ۰۱:۵۴:۰۹
ارسال‌ها
پاسخ
Mohandese_Javan آفلاین
در حال پیشرفت
***

ارسال‌ها: 345
موضوع‌ها: 90
تاریخ عضویت: فروردین ۱۳۸۴

تشکرها : 1
( 39 تشکر در 23 ارسال )
ارسال: #4
RE: توقف یک روال
جناب Darg لطف میکنید راجع به این خاصیت Tag یه توضیحی بدید؟
ممنون!
۲۰-اردیبهشت-۱۳۸۵, ۰۲:۰۱:۴۲
ارسال‌ها
پاسخ
Darg غایب
مدير بازنشسته
*****

ارسال‌ها: 894
موضوع‌ها: 40
تاریخ عضویت: تير ۱۳۸۴

تشکرها : 381
( 702 تشکر در 190 ارسال )
ارسال: #5
at  RE: توقف یک روال
Tag= برچسب,منگوله,ضمیمه کردن,اتکیت چسباندن

Tag یک خصوصیت اضافی برای استفاده های مختلف در یک شیئ است
VB خود به Tag اشیاء کاری ندارد و آن را مقدار دهی نمی کند. اما برنامه نویش می تواند در مواردی که احتیاج به اختصاص یک داده مضاعف برای یک شیء دارد از Tag استفاده کند (مانند کد بالا وقتی خواستم فشرده شدن دکمه را گزارش کنم به جای تعریف یک آرایه جدید از Tag خود دکمه استفاده کردم)
خصوصیت Tag از نوع String است و می توانید با کمی خلاقیت بیش از یک داده به آن اختصاص دهید.

کد:
Private Sub Form_Load()
Me.Tag = "500$|20000$|30$|1800$"
Command1.Caption = Split(Me.Tag, "|")(Val(Command1.Tag))
End Sub
Private Sub Command1_Click()
Command1.Tag = Val(Command1.Tag) + 1
If Val(Command1.Tag) > UBound(Split(Me.Tag, "|")) Then Command1.Tag = 0
Command1.Caption = Split(Me.Tag, "|")(Val(Command1.Tag))
End Sub

کد بالا کار می کنه اما بدون تعریف هیچ آرایه ای !
۲۰-اردیبهشت-۱۳۸۵, ۰۹:۳۰:۳۴
وب سایت ارسال‌ها
پاسخ
seyyed آفلاین
كاربر دو ستاره
**

ارسال‌ها: 72
موضوع‌ها: 27
تاریخ عضویت: اردیبهشت ۱۳۸۴

تشکرها : 1
( 2 تشکر در 2 ارسال )
ارسال: #6
RE: توقف یک روال
سلام
اگه ما بخوایم یک میلیون بار دستور ایف را اجرا کنیم که خیلی زمان می بره
راهی نداره که دستور توقف روال رو تو همون روال (کامند یک ) نوشت؟
۲۱-اردیبهشت-۱۳۸۵, ۲۲:۰۲:۳۹
وب سایت ارسال‌ها
پاسخ
Darg غایب
مدير بازنشسته
*****

ارسال‌ها: 894
موضوع‌ها: 40
تاریخ عضویت: تير ۱۳۸۴

تشکرها : 381
( 702 تشکر در 190 ارسال )
ارسال: #7
RE: توقف یک روال
خوب اگر این طوری راضی نیستی راه حل های دیگه ای هم هست.
وقعا راست میگند برنامه نویسی قدرت تفکر رو تقویت میکنه. کد زیر:

کد:
Dim I     As Double
Const Max As Double = 10 ^ 10
Private Sub Command1_Click()
I = Max
End Sub
Private Sub Form_Load()
Me.Show
For I = 0 To Max
DoEvents
Next
MsgBox "End For ... Next"
End Sub

همیشه کوتاه ترین راه حل ها بهترین اون ها نیستند
(آخرین ویرایش در این ارسال: ۲۲-اردیبهشت-۱۳۸۵, ۰۰:۲۳:۵۴، توسط Darg.)
۲۲-اردیبهشت-۱۳۸۵, ۰۰:۱۷:۳۹
وب سایت ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  توقف جستجو در وي بي skayyal 2 1,884 ۱۷-اردیبهشت-۱۳۸۵, ۰۳:۱۸:۴۴
آخرین ارسال: Payman62
  اجراي اتوماتيك يك روال در ساعت مشخص؟ hamed_Arfaee 11 6,809 ۰۵-اردیبهشت-۱۳۸۵, ۲۳:۳۵:۳۷
آخرین ارسال: hamed_Arfaee

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 3 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS