PB7升级到PB8后运行程序提示数组越界(附出错误代码),请高手指导

嘉友云阁 2014-01-30 10:47:31
窗口的resize事件中如下代码,应该是调整各控件位置的。。错误提示是:
Error:Array boundary execeeded at line 9 in resize event of object w_parint_preview
在PB7中运行正常,升到PB8后出现的问题。。。

其中ir_x[],ir_y[],ir_width[],ir_height[]等是real型的窗口变量



代码如下:
integer li_i,li_count
li_count=upperbound(this.control[])
messagebox(string( li_count),string(li_count))
for li_i=1 to li_count
choose case this.control[li_i].typeof()
// messagebox(string(li_i),string(icb_obj))
case commandbutton!
icb_obj=this.control[li_i]
icb_obj.x=newwidth*ir_x[li_i]
icb_obj.y=newheight*ir_y[li_i]
icb_obj.width=newwidth*ir_width[li_i]
icb_obj.height=newheight*ir_height[li_i]

case datawindow!
idw_obj=this.control[li_i]
idw_obj.x=newwidth*ir_x[li_i]
idw_obj.y=newheight*ir_y[li_i]
idw_obj.width=newwidth*ir_width[li_i]
idw_obj.height=newheight*ir_height[li_i]

case editmask!
iem_obj=this.control[li_i]
iem_obj.x=newwidth*ir_x[li_i]
iem_obj.y=newheight*ir_y[li_i]
iem_obj.width=newwidth*ir_width[li_i]
iem_obj.height=newheight*ir_height[li_i]

case dropdownlistbox!
iddlb_obj=this.control[li_i]
iddlb_obj.x=newwidth*ir_x[li_i]
iddlb_obj.y=newheight*ir_y[li_i]
iddlb_obj.width=newwidth*ir_width[li_i]
iddlb_obj.height=newheight*ir_height[li_i]

case statictext!
ist_obj=this.control[li_i]
ist_obj.x=newwidth*ir_x[li_i]
ist_obj.y=newheight*ir_y[li_i]
ist_obj.width=newwidth*ir_width[li_i]
ist_obj.height=newheight*ir_height[li_i]

case checkbox!
icbx_obj=this.control[li_i]
icbx_obj.x=newwidth*ir_x[li_i]
icbx_obj.y=newheight*ir_y[li_i]
icbx_obj.width=newwidth*ir_width[li_i]
icbx_obj.height=newheight*ir_height[li_i]

end choose
next
...全文
447 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
WorldMobile 2014-02-05
  • 打赏
  • 举报
回复
引用 2 楼 yungesun 的回复:
算了,找到问题所在了,原来是先触发了resize事件,导致窗口变量 没有赋值。。。哎。。。浪费20分啊,谁先回答就给谁了。。。。
呵呵,解决就好
嘉友云阁 2014-01-30
  • 打赏
  • 举报
回复
算了,找到问题所在了,原来是先触发了resize事件,导致窗口变量 没有赋值。。。哎。。。浪费20分啊,谁先回答就给谁了。。。。
嘉友云阁 2014-01-30
  • 打赏
  • 举报
回复
还有一个自定义事件,是在OPEN是触发的。我试着在按钮控件的代码下加了messagebos,发现和resize事件中的li_i不相等,一个是18,一个是1, 代码如下, integer li_count,li_i long ll_width,ll_height li_count=upperbound(this.control[]) //获得控件的总个数 ll_width=this.workspacewidth( ) ll_height=this.workspaceheight( ) //获得工作空间的高和宽 for li_i=1 to li_count choose case this.control[li_i].typeof() //获得控件的类型 case commandbutton! messagebox(string(li_i),string(li_i)) icb_obj=this.control[li_i] ir_x[li_i]=round(icb_obj.x / ll_width,3) ir_y[li_i]=round(icb_obj.y/ll_height,3) ir_width[li_i]=round(icb_obj.width/ll_width,3) ir_height[li_i]=round(icb_obj.height/ll_height,3) case datawindow! idw_obj=this.control[li_i] ir_x[li_i]=round(idw_obj.x / ll_width,3) ir_y[li_i]=round(idw_obj.y/ll_height,3) ir_width[li_i]=round(idw_obj.width/ll_width,3) ir_height[li_i]=round(idw_obj.height/ll_height,3) case editmask! iem_obj=this.control[li_i] ir_x[li_i]=round(iem_obj.x / ll_width,3) ir_y[li_i]=round(iem_obj.y/ll_height,3) ir_width[li_i]=round(iem_obj.width/ll_width,3) ir_height[li_i]=round(iem_obj.height/ll_height,3) case dropdownlistbox! iddlb_obj=this.control[li_i] ir_x[li_i]=round(iddlb_obj.x / ll_width,3) ir_y[li_i]=round(iddlb_obj.y/ll_height,3) ir_width[li_i]=round(iddlb_obj.width/ll_width,3) ir_height[li_i]=round(iddlb_obj.height/ll_height,3) case statictext! ist_obj=this.control[li_i] ir_x[li_i]=round(ist_obj.x / ll_width,3) ir_y[li_i]=round(ist_obj.y/ll_height,3) ir_width[li_i]=round(ist_obj.width/ll_width,3) ir_height[li_i]=round(ist_obj.height/ll_height,3) case checkbox! icbx_obj=this.control[li_i] ir_x[li_i]=round(icbx_obj.x / ll_width,3) ir_y[li_i]=round(icbx_obj.y/ll_height,3) ir_width[li_i]=round(icbx_obj.width/ll_width,3) ir_height[li_i]=round(icbx_obj.height/ll_height,3) end choose next
bombshell 2014-01-30
  • 打赏
  • 举报
回复
春节快乐呀!
kenshu 2014-01-30
  • 打赏
  • 举报
回复
分是我的.其它人都去过春节了.

1,072

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧