解决PB中不能用OpenUserObject实例化Line、Oval、Rectangle、RoundRectangle等窗口控件的问题

最近在网上看到网友们的阐述,有些不太具体,有些纯属胡说,下面给我一个比较实在的解决方法,这个解决方法没有调用Windows的API,而是利用PowerBuilder自身的新建Custom Visual的功能。

具体操作过程(问题的造成原因在我博客http://i.cn.yahoo.com/neonlight里有,这里不多废话了),创建好应用程序以及其中需要调用GraphicObject对象的窗口后,创建一个Custom Visual:

单击“新建(New)”,选择“PB Object”选项卡中的“Custom Visual”,随后工作区出现的操作对象类似窗口对象,把你想插入的GraphicObject对象控件,例如Rectangle插入其中,随后如果想在调用窗口中只显示这个控件时,可以把正在创建的“Custom Visual”的height和width都调整成插入控件的大小,并把GraphicObject对象控件的坐标调整为(x:0,y:0)。这样整个窗口仅仅能显示出你得这个GraphicObject对象控件,保存这个“Custom Visual”,取个文件名例如“uo_box”。

之后在你想动态生成控件的事件中写下如下代码:

uo_box uo_rectangle

OpenUserObject(uo_rectangle,100,100)  //在父亲窗口中0,0坐标处打开uo_rectangle

//将uo_rectangle放入窗口控件数组内,当然也可以不放进去 

w_main.Control[UpperBound(w_main.Control)+1] = uo_rectangle

 

//设置uo_rectangle的宽度、高度、坐标

uo_rectangle.width= 100

uo_rectangle.height = 100

uo_rectangle.move(400,100) //设置uo_rectangle的坐标,这里是放到400,100处

 

//设置这个uo_rectangle可见

uo_rectangle.visible = true

 

//当应用完这个控件,确定以后不再需要时,可以写如下代码销毁这个对象实例;

//否则庞大数量的动态生成控件可能会引起内存溢出错误。

if isvalid(uo_rectangle) then 

 CloseUserObject(uo_rectangle) 

end if

到这里,大功告成,你可以运行调试了。

转自:https://blog.csdn.net/u013274086/article/details/50547558

仅供参考,具体使用还要根据实际情况作修改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值