最好有 库文件啊!
最好有 库文件啊!
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属性,从而实现控件随窗口大小的变化自动按比例放大或缩小。