powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Параметры в MPR
5 сообщений из 5, страница 1 из 1
Параметры в MPR
    #32274404
lnu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой вот вопрос.
Есть у меня меню для AsTopLevelForm которое запускается с такими параметрами:

LPARAMETERS oFormRef, getMenuName, lUniquePopups, parm4, parm5, parm6, parm7, parm8, parm9

На клик должна выполнится такая процедурка:

PROCEDURE _1200sdyn3
oFormRef.Caption=' '

но фокс говорит что "Object OFORMREF is not found"...
...
Рейтинг: 0 / 0
Параметры в MPR
    #32274439
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
LPARAMETERS oFormRef,..


А с каких это пор локальные параметры процедуры видны в другой процедуре? Передай сслыку на эту форму еще раз.

Код: plaintext
1.
2.
3.
4.
on selection bar x do _1200sdyn3 with oFormRef
..
PROCEDURE _1200sdyn3
LPARAMETERS oFormRef
oFormRef.Caption=' '
...
Рейтинг: 0 / 0
Параметры в MPR
    #32274470
lnu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Буква L в слове LPARAMETERS означает, что параметры будут локальными.
А почему же тогда не работает просто PARAMETERS?
Какое различие между PARAMETER, PARAMETER и LPARAMETERS?

И вот пример из папчки Solutions/Menus
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
*       *  10 / 11 / 00             EDTSHORT.MPR               17 : 10 : 38   
PARAMETER oREF


DEFINE POPUP edtshort SHORTCUT RELATIVE FROM MROW(),MCOL()
DEFINE BAR  1  OF edtshort PROMPT  "\<Font..." 
DEFINE BAR  2  OF edtshort PROMPT  "\-" 
DEFINE BAR _med_cut OF edtshort PROMPT  "Cu\<t"  ;
	KEY CTRL+X,  "Ctrl+X"  ;
	MESSAGE  "Removes the selection and places it onto the Clipboard" 
DEFINE BAR _med_copy OF edtshort PROMPT  "\<Copy"  ;
	KEY CTRL+C,  "Ctrl+C"  ;
	MESSAGE  "Copies the selection onto the Clipboard" 
DEFINE BAR _med_paste OF edtshort PROMPT  "\<Paste"  ;
	KEY CTRL+V,  "Ctrl+V"  ;
	MESSAGE  "Pastes the contents of the Clipboard" 
DEFINE BAR _med_clear OF edtshort PROMPT  "Cle\<ar"  ;
	MESSAGE  "Removes the selection and does not place it onto the Clipboard" 
ON SELECTION BAR  1  OF edtshort ;
	DO _07x10tf0x ;
	IN LOCFILE( "MENUS\EDTSHORT"  , "MPX;MPR|FXP;PRG"  , "WHERE is EDTSHORT?" )

ACTIVATE POPUP edtshort

PROCEDURE _07x10tf0x
IF TYPE( "m.oRef" ) =  "O" 
	m.cFont = GetFont()
	IF EMPTY(m.cFont)
		RETURN
	ENDIF
	m.commaLoc = AT( "," ,m.cFont)
	m.comma2Loc = AT( "," ,m.cFont, 2 )
	oRef.FontName = SUBSTR(m.cFont, 1 ,m.commaLoc- 1 )
	oRef.FontSize = VAL(SUBSTR(m.cFont,m.commaLoc+ 1 ,m.comma2Loc-m.commaLoc))
	oRef.FontBold = ATC( "B" ,SUBSTR(m.cFont,m.comma2Loc))# 0 
	oRef.FontItalic = ATC( "I" ,SUBSTR(m.cFont,m.comma2Loc))# 0 
ENDIF


и вроде работает все нормально.
...
Рейтинг: 0 / 0
Параметры в MPR
    #32274505
chagoserg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дело не в буковках ;)
дело в том, что передаваемые параметры дальше вызываемого метода не видны, поскольку являются локальными... а параметры всегда локальны по определению... а для того, чтобы параметр (в данном случае объект) был виден другими методами необходимо присвоить его значение свойству формы и ссылаться на него через это свойство.
...
Рейтинг: 0 / 0
Параметры в MPR
    #32274521
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Параметры, обявленные через LPARAMETERS, ведут себя как переменные, обявленные через LOCAL, и будут видны только в текущей процедуре, а параметры, обявленные через PARAMETERS, ведут себя как переменные, обявленные через PRIVATE, и будут видны в текущей процедуре и во всех вызываемых.
Код, приведенный тобой из solutions, будет работать, поскольку процедура _07x10tf0x вызывается из процедуры EDTSHORT (там задержка на ACTIVATE POPUP edtshort, процедура не завершается и private переменная oRef существует).
Предполагаю, что в твоем случае меню определяется и выводиться на экран, но все действия с меню происходят уже после завершения процедуры, где определен параметр oFormRef. Поэтому вызываемые процедуры не увидят эту переменную, независмо от того, каким из двух способов она определена.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Параметры в MPR
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]