PDA

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



shsoft
سه شنبه 03 شهریور 1383, 21:21 عصر
با سلام
آقا شرمنده عنوان خوبی پیدا نکردم :oops:
می خواستم بدونم به چه طریق می شه از فرمی روالی در فرم دیگر را اجرا کرد:
اگر دو فرم frm1 و frm2 را داشته باشیم و بخواهیم از فرم frm1 به frm2 برویم و
سپس از فرم frm2 به فرم frm1 بازگردیم ویک روال مشخص را اجرا کنیم .


frm1 --> frm2 ---> frm1 ==> runfunctin

private sub runfunction()
msgbox("run")
end sub

با تشکر :roll:

jannati
چهارشنبه 04 شهریور 1383, 08:26 صبح
خوب شما یک متغییر را در یک ماژول تعریف کن.حالا در رویداد لود فرم اول یک شرط بذار که مثلا :


if con=1 then
function()
end if

حالا مقدار این متغییر را در فرم دوم اونجایی که لازم هست مساوی با یک قرار بدید.
البته با توجه به برنامه میتونید این متغییر را بولین تعریف کنید یا ... .یادتون باشه ابتدا مقدارشو یک طوری تعیین کنی که شرط بالا در هر بار لود فرم 1 اجرا نشه.

ساران سافت
چهارشنبه 04 شهریور 1383, 09:53 صبح
اگر متوجه نشدی بگو تا بیشتر توضیح بدهم :roll:

shsoft
چهارشنبه 04 شهریور 1383, 13:19 عصر
من فرم frm1 رو فقط Hide می کنم نه unload پس Form_Load اجرا نمی شه

من فقط می خوام بدونم آیا وی بی این امکان رو داره تا توابع موجود در فرم های دیگر
رو اجرا کنه یا نه
مثلا دستور زیر خطا داره:

در فرم frm2
private sub command1_click

call frm1.command1_click

end sub
دستورات بالا - اجرای رویداد کلیک command1 در فرم frm1
با تشکر فراوان

shahramie
چهارشنبه 04 شهریور 1383, 13:50 عصر
دوست عزیز برای اینکه بخوای از تو یک فرم دیگر یک procedure را فراخوانی کنید فقط کافیه که اسم فرم اول را اول بیاری بعد با یک . اسم آن function ,Procedure یا بقول فارسی را پاس بداریم روال را بیارید .
مثلا از تو فرم 1 می خواهید روال salam را از فرم 2 فراخوانی کنید :
frm2.salam
امیدوارم که توضیحات مفید باشه

shsoft
چهارشنبه 04 شهریور 1383, 15:17 عصر
من راه حلی رو که کاربر shahramie توضیح دادن آزمایش کردم ولی برنامه با پیغام خطای Method or Data Member not found متوقف می شود. :cry:

AminSobati
پنج شنبه 05 شهریور 1383, 12:12 عصر
دوست عزیزم،
دلیلش اینه که وقتی از فرم دیگری یک تایع رو میخواید call کنید، اون تابع نباید به صورت Private تعریف شده باشه، بلکه باید Public یا Friend باشه. به عنوان مثال اگر از فرم 1 میخواهید Command1_Click در فرم 2 رو استفاده کنید، Command1_Click باید به یکی از دو شکل زیر باشه:

Friend Sub Command1_Click()

End Sub
یا

public Sub Command1_Click()

End Sub
حالا در فرم 1 میتونین بنویسین:

Form2.Command1_Click

shsoft
پنج شنبه 05 شهریور 1383, 17:54 عصر
از راهنمایی تمام دوستان بی نهایت متشکرم

درسته اشکال کار من در قسمتی بود که تابع مورد نظر رو محلی تعریف کرده بودم.

AminSobati
پنج شنبه 05 شهریور 1383, 19:44 عصر
:)