سلام
بچه ها به جای تابع Sleep دستور دیگری برای وقفه سراغ ندارید :?:
اخه Sleep وقتی وقفه میده تمام برنامه قفل میشه :-x
من فقط میخام تو یه شمارش یه وقفه بدم و دوباره شرع کنم طوریکه کاربر بتونه از بقیه برنامه استفاده کنه :roll:
سلام
بچه ها به جای تابع Sleep دستور دیگری برای وقفه سراغ ندارید :?:
اخه Sleep وقتی وقفه میده تمام برنامه قفل میشه :-x
من فقط میخام تو یه شمارش یه وقفه بدم و دوباره شرع کنم طوریکه کاربر بتونه از بقیه برنامه استفاده کنه :roll:
میتونی یک حلقه بسازی و در ابتدا قبل از حلقه زمان سیستم رو بدست بیاری
بعد درون حلقه تا زمانی بچرخی که زمان سیستم منهای زمان ابتدا کوچکتر از
زمان دلخواه ایست میباشد و در غیز اینصورت از حلقه خارج بشی
سلام
کدنویس جان میشه یه کم توضیح بدین :?:
من میخام که تو یه لیبل یه چیزایی بنویسم و وقتی که به عدد یا کلمه مورد نظر رسید یه 2 ثانیه ای اونو نشون بده و دوباره ادامه پیدا کنه و من برا اینکار از یه شرط و یه Sleep استفاده کردم که نشد :oops:
راه درستیه ولی برای اینکه برنامه متوقف نشه باید تو داخل حلقه از عبارت زیر استفاده کنید:میتونی یک حلقه بسازی و در ابتدا قبل از حلقه زمان سیستم رو بدست بیاری
بعد درون حلقه تا زمانی بچرخی که زمان سیستم منهای زمان ابتدا کوچکتر از
زمان دلخواه ایست میباشد و در غیز اینصورت از حلقه خارج بشی
Application.ProcessMessages
جان میشه در مورد Application.ProcessMessages بیشتر توضیح بدی؟ SalarSoft
فکر کنم منظورش همون Doevent باشه :roll:
اره اگه میشه یه کم توضیح بده که کارش چیه
با همون حلقه کاملا به جواب میرسی اصلا این یک روشی است که در خیلی از
مواقع برای اندازه گیری زمان پردازش های مختلف و مقایسه آنها استفاده میشه
سلام
شرمنده میشه یه مثال بزارید :oops:
اخه من هر کار کردم باز برنامه قفل میشه :o
بابا از Timer استفاده کن.
ضمنا Application.ProcessMessage مربوط به .NET است نه VB6
سلام
من تو برنامه ام از تایمر زیاد استفاده کردم و به همین خاطر بعد ار Exe کردنش سرعت بقیه برنامه ها رو هم پایین میاره :evil:
بله حق با شما بود چون دستور Application.ProcessMessage تو وی بی جواب نمی داد :shock:
میشه یکی یه راهنمایی کنه تا بعد از استفاده از تایمر ها سرعت کم نشه
:roll:
باید از حلقه ها استفاده کنی ولی برای این که اجرای متعدد حلقه برنامه رو به حالت تعلیق نبره باید با دستور DoEvents حلقه رو گسسته کنی
یه مثال میزنم
برنامه زیر در اثر کلیک کردن یه دکمه بعد از 10 ثانیه یک کادر محاوره ای نمایش میده
Private Sub Command1_Click()
Dim t as date
t = Time
Do
DoEvents
Loop While DateAdd("s", 10, t) > Time
MsgBox "After 10 seconds"
End Sub
البته این کد فقط جنبه آموزشی داره
اگه 10 ثانیه زیاده تو خط ششم یه عدد دیگه بنویس
سلام
ممنونم :kiss: :kiss: :kiss:
آقا از doevents برای چی استفاده کردین؟
بدون آن هم که کار میکنه
سلامنوشته شده توسط vbprogramer
من که کارم راه افتاد میشه شما هم مثال خودتون رو بزارید
حمید جان من توی همون برنامه گفتم
فقط میخواهم بدونم خاصیت doevent چیه و برای چی استفاده میشه؟
سلام
vbprogramer عزیز این دستور باعث میشه که تو حلقه برنامه قفل نکنه (همون مشکل من) :|
نیازی به doevents نیست و در بعضی مواقع همین مسئله باعث هنگ کردن میشه
( نه همیشه در حالت خاص ) به همین خاطر اگر استفاده نکنی بهتره اگر هم استفاده
کردی که نوش جونت :wink:
سلام
کدنویس عزیز میشه اون حالات خاص رو بگید در ضمن من بدون Do Event نوشتم ولی برنامه ام قفل میکرد :-x
میشه شما یک مثال بدون Do Event بگید
شما همین کد رو بدون doevents بکار ببر ببین بازم هنگ میکنه
یه توضیحی هم راجع به برنامه ات بده ببینم مشکل کجاست
اره هنگ میکنه
من یه لیبل دارم که توش هم متن و هم عدد هست
من میخام وقتی عدد نمایش داده میشه چند ثانیه مکث کنه و بعد ادامه بده
من اینو تو یه تایمر گذاشتم و چون Interval تایمرم از 1 ثانیه کمتر بود نمیتونستم از خود تایمر استفاده کنم
در ضمن من نمیخوام از چند تا تایمر استفاده کنم چون سرعت رو پایین میارن :evil:
دوستان عزیزی که کار DoEvent را برسیده بودند . اگر برنامه شما در حال اجرا باشد و مثلا به یک حلقه برسد ویندوز تقریبا کارهای دیگرش( منظور برنامه های دیگری که در حال اجرا هستند ) را ول نموده و حلقه شما را اجرا میکند برای اینکه ویندوز به برنامه های دیگر هم برسد اگر به این دستور رسید موقتا از کنترل را از برنامه در حال اجرا گرفته و به برنامه های دیگر میرسد و سبس کنترل را به برنامه ما میفرستد یعنی از این دستور استفاده میشود :ه ویندوز بتواند به برنامه های در حال اجرای دیگر نیز رسیدگی کند .
در واقع این دستور به ویژوال بیسیک ( نه ویندوز ) اعلام می کند که برنامه را در محل برخورد به این دستور متوقف کرده و به رویداد های دیگر صف پیام که ویندوز به سوی برنامه ارسال کرده پاسخ دهداگر برنامه شما در حال اجرا باشد و مثلا به یک حلقه برسد ویندوز تقریبا کارهای دیگرش( منظور برنامه های دیگری که در حال اجرا هستند ) را ول نموده و حلقه شما را اجرا میکند برای اینکه ویندوز به برنامه های دیگر هم برسد اگر به این دستور رسید موقتا از کنترل را از برنامه در حال اجرا گرفته و به برنامه های دیگر میرسد و سبس کنترل را به برنامه ما میفرستد یعنی از این دستور استفاده میشود :ه ویندوز بتواند به برنامه های در حال اجرای دیگر نیز رسیدگی کند .