当前位置: 代码迷 >> PB >> 实例变量与对象实例化解决方法
  详细解决方案

实例变量与对象实例化解决方法

热度:86   发布时间:2016-04-29 07:08:58.0
实例变量与对象实例化
菜单是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
  相关解决方案