新建一个空白窗体(window),在自定义事件里,定义名为ue_getScale的事件。
入口参数None,返回值None, 事件ID为None。
事件内容:
//获取控件与窗口比例大小
int li_i
DragObject wnd
for li_i = upperBound(Control[]) to 1 step -1
wnd = control[li_i]
id_scaleX[li_i] = wnd.X / width
id_scaleY[li_i] = wnd.Y / height
id_scaleWidth[li_i] = wnd.width / width
id_scaleHeight[li_i] = wnd.height / height
next
在resize事件里写入如下代码:
int li_i, li_count
DragObject w_object
if sizeType = 1 then return 0 //最小化窗口不处理
li_count = upperBound(id_scaleX[])
if li_count < 0 then return 0
SetRedraw(false)
for li_i = 1 to li_count
w_object = control[li_i]
w_object.X = ceiling(width * id_scaleX[li_i])
w_object.Y = ceiling(height * id_scaleY[li_i])
w_object.width = ceiling(width * id_scaleWidth[li_i])
w_object.height = ceiling(height * id_scaleHeight[li_i])
next
SetRedraw(true)
最后在Open事件里触发Ue_getScale()事件就可以了
备注:对DataWindow和OLE控件效果不是很好
本文介绍了一种在窗口尺寸改变时保持控件位置及大小比例的方法。通过自定义ue_getScale事件,记录控件与窗口的比例,在窗口调整大小时重新计算控件的位置和尺寸,确保布局一致。
4433

被折叠的 条评论
为什么被折叠?



