注册 登录
编程论坛 PowerBuilder

窗口控件随窗口自动缩放

niute 发布于 2006-07-03 21:19, 3356 次点击
斑竹能给个 窗口里的对象datawindows 、图片、按钮等控件随窗口大小 变化而自动比例缩放的例子?
最好有 库文件啊!
6 回复
#2
hust2312006-07-05 16:44

我也想要一个啊!!

#3
lilin3212006-08-18 11:14
在窗口的RESIZE事件中修改对象的属性
#4
upcbird2006-08-20 23:30
我也想知道具体应该怎么操作啊。?
#5
潇洒老乌龟2006-08-21 22:51

PB窗口控件的自动缩放

功能:当窗口大小调整时,窗口内的控件包括Tab控件和UserObject控件内的控件将随窗口大小的变化按比例自动进行缩放。

设计说明:

提出问题
  目前,为了通用性,大多数PB应用程序是在640x480或800x600显示分辨率模式下设计的,由于种种原因,用户经常使用其它的显示分辨率。当分辨率从640x480调整到800x600或1024x768时,应用窗口相对缩小,为了充分利用屏幕空间而将窗口最大化后,窗口内控件的尺寸、位置是固定的,并且集中到窗口的左上角,既不美观,又浪费了宝贵的屏幕空间。

了解控件
  PowerBuilder是一种面向对象的开发工具,除SystemFunctions类外,所有对象均由祖先类PowerObject继承而来。PowerObject有九种子类,窗口内所有控件均继承自PowerObject\GraphicObject\WindowObject,该类派生出两种子类:DrawObject和DragObject。DrawObject类是画图对象,属于该类的控件有:线段、椭圆、矩形和园角矩形,其余控件均属于DragObject类。

  由于DrawObject控件在应用程序中使用得比较少,因此,为了简化程序,本软件仅对DragObject控件进行自动缩放。

实现原理
  PowerBuilder的窗口对象有一个非常重要的属性-control[]数组,存储了窗口内放置的所有控件。通过这个数组,可以访问各控件的属性。但窗口的control[]数组并不存储放在Tab控件和UserObject控件内部的控件,它们存储在Tab控件和UserObject控件各自的control[]数组中。

  在窗口的open事件中,通过其control[]数组,找出在窗口内放置的全部DragObject类控件(当遇到Tab控件和UserObject控件时,继续通过它们各自的control[]数组,找出其内部的全部DragObject类控件),保存所有找到的控件的原始x、y、width和height属性数据与当前窗口原始宽度和高度的比例值。当窗口大小调整时,在resize事件中,根据保存的各控件的比例值重置控件的x、y、width和height属性,从而实现控件随窗口大小的变化自动按比例放大或缩小。

#6
linzhonglin2011-03-06 16:48
回复 5楼 潇洒老乌龟
当遇到Tab控件和UserObject控件时,继续通过它们各自的control[]数组,找出其内部的全部DragObject类控件:
如何取出该control[]数组,使用upperbound(This.Control[])无效果
#7
大湖2012-02-11 22:26
使用pfc就省事了
1