菜单是PB中对象吧?将菜单m_1挂接到窗体w_1上后可直接引用。
例如在窗体w_1的open事件script脚本中代码如下
w_1.m_1.triggerevent(clicked!)
假设菜单m_2并没有挂接到窗体w_1上,在窗体w_1的rbuttondown事件script脚本中代码如下
m_2 PopMenu
PopMenu = CREATE m_2
PopMenu.m_1.PopMenu(PointerX(), PointerY())
DESTROY PopMenu
而若在istance variables中声明实例变量
m_2 PopMenu
之后,将窗体w_1的rbuttondown事件script脚本中代码改变成如下
//m_2 PopMenu
//PopMenu = CREATE m_2
PopMenu.m_1.PopMenu(PointerX(), PointerY())
//DESTROY PopMenu
之后,程序运行时提示NULL OBJECT REFERENCE,并强制退出
我个人理解,create是将对象实例化的,那具体实例变量跟对象实例化(用create函数)有什么区别!!??还有,挂接到窗体上的菜单是实例变量吗??
------解决方案--------------------
pb的的变量作用域分为:全局变量,实例变量,共享变量与局部变量
严格的说,实例变量也是属于局部变量的一种,
这里的实例只是指的它的作用域与所依附的对象一样,在对象实例化的时候它才有效;
而对象实例化就是为对象分配内存
------解决方案--------------------
挂在窗体的菜单,在窗口初始化的时候,就给你实例好了,这是菜单控件封装好的
如果你在代码中定义一个实例变量,必须要先Create后,才能使用,在退出窗体的时候,要记得Destroy