当前位置: 代码迷 >> PB >> 动态创建BITMAP的有关问题
  详细解决方案

动态创建BITMAP的有关问题

热度:81   发布时间:2016-04-29 10:05:13.0
动态创建BITMAP的问题。
ls_AddPict ='create bitmap(band=foreground filename="' + ls_Picture + '" ' + &
' x="' + String(li_PictPos) + "~tInteger(describe('" + is_OrderCol + & 
".X')) + (Integer(describe('" + is_OrderCol + ".Width'))" + ' - 70)" y="24" ' + &
' height="33" width="51" border="0" name=p_' + is_OrderCol + ' visible="1")'
This.Modify(ls_AddPict)
This.SetSort(is_OrderCol + " " + is_SortType)
可以看到ls_addpict 的值 为 create bitmap(band=foreground filename="orderup.bmp" x="1653 integer(describe('shjbumen.x')) + (integer(describe('shjbumen.width')) - 70)" y="24" height="33" width="51" border="0" name=p_shjbumen visible="1"),
问题一:为什么X坐标的属性 的值 是 字符串呢。如果去掉integer(describe.....)部分创建动态bitmap就失败了。
问题二:动态创建的bitmap对象的属性 怎么 访问呢?

------解决方案--------------------
一、对于数值类型,在指定的时候可以做为字符串,另外,属性值为表达式时,肯定要用引号括起来的,要不编译器怎样去分析呢?你的图片地是由其它两个组件的位置动态计算的,所以肯定要括起来,你可以手工建一个bitmap,修改它的X属性为表达式,再到EditSource下去看看就知道了;
二、动态创建的与手工创建的一样,都可以通过它的name来访问的,你的name就是'p'+ is_ordercol
------解决方案--------------------
一、数据窗口对象语法中坐标的属性值为啥是字符串?你的代码就给出了答案呀,因为坐标值除了可以设置一个默认数值1653外,还可以设置坐标的表达式 integer(describe('shjbumen.x')) + (integer(describe('shjbumen.width')) - 70),如果只能是数字的话,你的表达式就非法了。
二、用describe来访问。
  相关解决方案