界面根据不同分辨率自动resize的问题,欢迎大家来讨论~

冷箫轻笛 中集集团 智能制造系统高级经理  2003-08-18 09:05:56
如果不同用户需要不同的分辨率,那么程序界面怎么样才能根据实际情况自动调节自身的大小哪?其中最关键的是窗口中的空间可以自动调节其位置的问题。如果在每个窗口resize事件里面加代码是可以实现的,但是那样太繁琐了,不知道还有没有其他的好办法~~~
...全文
18 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
bomber2001 2003-08-20
up
回复
dotnba 2003-08-20

回复
polugen 2003-08-20
UP
回复
jdsnhan 2003-08-20
看看PFC吧,那里有很好的解决方案
回复
albertghb 2003-08-20
看看这个!
Double ratioW, ratioH
Integer i, ll_controls, zFactor
DragObject ldo

IF oldW <> 0 and oldH <> 0 THEN
ratioW = newwidth / oldW
ratioH = newheight / oldH

ll_controls = UpperBound(this.Control)
FOR i = 1 TO ll_controls
ldo = this.Control[i]
//messagebox("",this.control[i].ClassName()) //display the control's name
ldo.Resize( ldo.Width * ratioW, ldo.Height * ratioH )
ldo.Move( ldo.X * ratioW, ldo.Y * ratioH )
NEXT
END IF

oldW = newWidth
oldH = newHeight
回复
polugen 2003-08-18
自己写的话累死了,还不如用PFC
回复
brightstar 2003-08-18
那样写太烦琐了,用PFC的RESIZE对象就相当的简单,你只需要注册每个需要RESIZE的控件并给一定的参数,好象叫u_resize_pfc吧。比较不错的。
回复
冷箫轻笛 2003-08-18
顶!
回复
klbt 2003-08-18

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

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

586

社区成员

PowerBuilder 控件与界面
申请成为版主
帖子事件
创建了帖子
2003-08-18 09:05
社区公告
暂无公告