ورود

View Full Version : ارجاع شی از منو



mehran_337
دوشنبه 27 فروردین 1386, 13:21 عصر
یک منو چگونه می تواند برنامه را با پارامتر شی فراخوانی کند . مثلا منویی باید برنامه x را صدا بزند :
on selection bar 1 of mnu do x

حالا می خوام با پارامتر مثلا with thisform یا مثلا thisform.text1.value را به برنامه x ارسال کنه
با تشکر

binyaz2003
دوشنبه 27 فروردین 1386, 17:16 عصر
باید قبلا اون شیئ رو به منو داده باشید مثلا فرمی که منو توی اون در حال اجرا هست رو غیر از _screen که از همه جا قابل دسترس هست . برای این کار زمانیکه طراح منو فعال هست از منوی view گزینه general options رو انتخاب و در پنجره باز شده گزینه setup رو انتخاب و بعد ok رو انتخاب کنید.این صفحه مثل واقعه init در فرم هست.کد زیر را در آون بنویسید :

PARAMETER oREF
#PREPOPحالا در هر جایی از منو که با فرم یا اشیاء داخل اون کار داشتید از oREF استفاده میکنید مثلا

oREF.Caption="Selected from main mune"

rezaTavak
سه شنبه 28 فروردین 1386, 07:40 صبح
دو حالت هست:

فرم قبلا اجرا شده: باید شی form را public کنید تا از همه جا به آن دسترسی داشته باشید.

فرم قبلا اجرا نشده است: فرم را اجرا میکنید و پارامتر به فرم ارسال میکنید و در متد init از آن پارامترها استفاده می کنید.

binyaz2003
سه شنبه 28 فروردین 1386, 10:08 صبح
ممنون از آقای توکل که بحث و کامل کردند در مورد فراخوانی منو در حالت دوم :
do mymenu.mpr with thisform

mehran_337
سه شنبه 28 فروردین 1386, 15:33 عصر
دو حالت هست:

فرم قبلا اجرا شده: باید شی form را public کنید تا از همه جا به آن دسترسی داشته باشید.

فرم قبلا اجرا نشده است: فرم را اجرا میکنید و پارامتر به فرم ارسال میکنید و در متد init از آن پارامترها استفاده می کنید.

public fname
fname = thisform

در init این دستور را قرار دادم اما fname.name جواب نمی ده.
شاید من بد منظور شما رو متوجه شدم.

rezaTavak
سه شنبه 28 فروردین 1386, 22:04 عصر
فرم را اجرا کرده اید؟

mehran_337
چهارشنبه 29 فروردین 1386, 15:33 عصر
بله اجرا کرده اما واقعا دستوری که نوشتم درسته؟؟؟

rezaTavak
پنج شنبه 30 فروردین 1386, 10:06 صبح
فرمتهان را تنهایی در محیط فاکس اجرا کنید و debug ببینید متغیر تعریف شده.

kia1349
پنج شنبه 30 فروردین 1386, 10:15 صبح
باید با حالت ماکرو متغیر را صدا بزنید
به این الگوریتم نگاه کن

strtedaz=""
For bb=1 To 18
chk1='thisform.check'+Alltrim(Str(bb,2))+'.value'
strtedaz=strtedaz+Str(&chk1,1)
Endfor
IF aya1.tedaz<>strtedaz
Replace aya1.tedaz With strtedaz
ENDIF
حالت ماکرو همون متغیری است که با & شروع شده