Foxpro,如何从菜单按钮访问表单?

时间:2013-11-23 00:38:49

标签: foxpro visual-foxpro

例如一些简单的表格

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?

2 个答案:

答案 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