2013-11-23 75 views
1

例如一些簡單的形式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

雖然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 
0

作爲可能的解決方案一個我發現是使用_SCREEN.ACTIVEFORM

_screen.ActiveForm.text1.value