PDA

View Full Version : سوال: اجرای یک تابع در همه فرمها



IranVB
سه شنبه 06 تیر 1391, 07:49 صبح
سلام به همه دوستان برنامه نویس

من ممکنه در برنامم 20 تا فرم داشته باشم که از یک تابع public به نام LoadTextBoxesMasks در برخیشون قرار داده باشم همونطور که که گفتم بعضیشون مثلا شاید در 10 تا از فرمها، که مسئولیت بروز کردن ماسک تکست باکس های در همان فرم رو برعهده داره، من بخاطر دلایلی نمیتونم این تابع رو در ماژول قرار بدم یعنی مشترک کنم، حالا سوالی که داشتم میخواستم بدونم آیا راهی وجود دارد که یک دستور در دکمه ای بنویسم که بصورت خودکار در همه فرمها این تابع رو اجرا کنه و من نخوام برای همه فرمها دستور اجرای این تابع را تک به تک بنویسیم مثلا اگه زمانی فرمهایی که این تابع رو در اونها استفاده کرده ام زیاد شدن دیگه نخوام دستور اجرای تابع اون فرم رو دوباره در اون دکمه اضافه کنم یعنی اون دکمه خودش اتوماتیک اون تابع در فرم جدید رو هم اجرا کنه

خیلی ممنونم

سید حمید حق پرست
سه شنبه 06 تیر 1391, 08:31 صبح
سلام علیکم

نمیدونم چرا همه میان سوالو میکنن و درست توضیح نمیدن!!!!!!!!!!!
دوست عزیز تابع مورد نظر شما چیه؟؟
سورسو قرار بده تا واست انجام بدم . ما که بیکاز نیستیم بیام یه سورس هم بنویسیم . سورس رو بزار . حالا سورس خودت نشد سورسی به عنوان مثال!!!!!!!!!!!

موفق باشید


یا علی (ع)

mohammadriano
سه شنبه 06 تیر 1391, 16:44 عصر
حق با آقای سید حمید حق پرستهست


سلام به همه دوستان برنامه نویس

من ممکنه در برنامم 20 تا فرم داشته باشم که از یک تابع public به نام LoadTextBoxesMasks در برخیشون قرار داده باشم همونطور که که گفتم بعضیشون مثلا شاید در 10 تا از فرمها، که مسئولیت بروز کردن ماسک تکست باکس های در همان فرم رو برعهده داره، من بخاطر دلایلی نمیتونم این تابع رو در ماژول قرار بدم یعنی مشترک کنم، حالا سوالی که داشتم میخواستم بدونم آیا راهی وجود دارد که یک دستور در دکمه ای بنویسم که بصورت خودکار در همه فرمها این تابع رو اجرا کنه و من نخوام برای همه فرمها دستور اجرای این تابع را تک به تک بنویسیم مثلا اگه زمانی فرمهایی که این تابع رو در اونها استفاده کرده ام زیاد شدن دیگه نخوام دستور اجرای تابع اون فرم رو دوباره در اون دکمه اضافه کنم یعنی اون دکمه خودش اتوماتیک اون تابع در فرم جدید رو هم اجرا کنه

خیلی ممنونم
???!!!!!
منظورتون رو که متوجه نشدم ولی محیط VB6 طوری هست که میشه به راحتی دورش زد
سوال خودتون را واضح بپرسید
در ضمن """من بخاطر دلایلی نمیتونم این تابع رو در ماژول قرار بدم""" مشکل شما در تعریف تابع در ماژول چیه؟
یک نمونه عکس یک نمونه کد

محسن واژدی
چهارشنبه 07 تیر 1391, 00:34 صبح
سلام علیکم
با اجازه دوستان برای این مورد میتوانید از CallByName استفاده کنید، و چون گفته اید میخواهید در همه فرم های باز این عمل صورت بگیرد میتوانید لیست فرمهای باز را از Forms-Collection بدست بیاورید، در کل کد را میتوانید بصورت زیر بنویسید:
Public Sub Command1_Click()
On Error Resume Next
Dim fForm As Form
For Each fForm In Forms
CallByName fForm, "MyProcNum", VbMethod
Next
End Sub
دستگیره خطا را هم به این جهت خاموش میکنیم چرا که در برخی از فرمها ممکن است تابع یا روال مورد نظر ما وجود نداشته باشد

موفق باشید