例如一些简单的表格
define class myf as form
add object text1 as textbox
procedure init
do G:\mymenu.mpr with thisform
endproc
enddefine
和mymeny.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?
答案 0 :(得分:2)
虽然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
答案 1 :(得分:0)
作为可能的解决方案之一,我发现使用_screen.ActiveForm
_screen.ActiveForm.text1.value