例如,一些简单形式的
define class myf as form
add object text1 as textbox
procedure init
do G:mymenu.mpr with thisform
endproc
enddefine
和mymen.mpr文件的内容:
parameters f
Define Menu menubar in (m.f.Name) Bar
Define Pad qrs of menubar prompt "Queries"
ON SELECTION pad qrs OF menubar do dosth
procedure dosth
???.text1.value = "sample"
endproc
我如何从这里引用myf表格?
尽管Kassie有_screen.ActiveForm选项,但不能保证它总是可用的。然而,您可以始终向_Screen对象添加自定义属性,并将其设置为表单的属性。然后,即使它不是"活动"表单,您也可以始终引用它,并希望将焦点转移到它…
define class myf as form
add object text1 as textbox
procedure init
if NOT PEMSTATUS( _Screen, "oMyForm", 5 )
_Screen.AddProperty( "oMyForm" )
endif
_Screen.oMyForm = this
do G:mymenu.mpr
endproc
enddefine
然后,在菜单程序中,不需要参数,只需使用附加到_Screen对象的现在公开可见的属性,然后从
Define Menu menubar in (_Screen.oMyForm.Name) Bar
Define Pad qrs of menubar prompt "Queries"
ON SELECTION pad qrs OF menubar do dosth
procedure dosth
_Screen.oMyForm.text1.Value = "sample"
endproc
我发现的一个可能的解决方案是使用_screen.ActiveForm
_screen.ActiveForm.text1.value