|
看了别的大佬写的组件自适应窗口 不是很好用,我自己写了一个,希望大佬,帮忙优化一下
.版本 2
.程序集 窗口程序集_启动窗口
.程序集变量 集_自适应_子句柄_数组, 整数型, , "0"
.程序集变量 集_自适应_自窗口句柄, 整数型
.程序集变量 集_自适应_判断, 逻辑型
.程序集变量 集_自适应_主窗口_宽度, 双精度小数型
.程序集变量 集_自适应_主窗口_高度, 双精度小数型
.程序集变量 集_自适应_左边, 整数型, , "0"
.程序集变量 集_自适应_顶边, 整数型, , "0"
.程序集变量 集_自适应_右边, 整数型, , "0"
.程序集变量 集_自适应_底边, 整数型, , "0"
.子程序 __启动窗口_尺寸被改变
_启动_尺寸_自适应 (_启动窗口)
.子程序 _启动_尺寸_自适应, , 公开, 放在 __启动窗口_尺寸被改变 下面就可以了
.参数 自适应窗口, 窗口, , 要载入的窗口 比如 _启动窗口
.局部变量 主窗口矩形, 矩形
.局部变量 组件矩形, 矩形
.局部变量 局_高度系数, 双精度小数型
.局部变量 局_宽度系数, 双精度小数型
.局部变量 组件_左边, 整数型
.局部变量 组件_高度, 整数型
.局部变量 组件_宽度, 整数型
.局部变量 组件_顶边, 整数型
.局部变量 局_主窗口宽度, 双精度小数型
.局部变量 局_主窗口高度, 双精度小数型
.局部变量 局_等待, 整数型
.局部变量 局_数量, 整数型
.局部变量 局_变化宽度, 双精度小数型
.局部变量 局_变化高度, 双精度小数型
.局部变量 补宽, 双精度小数型
.局部变量 补高, 双精度小数型
.局部变量 补足, 整数型
.局部变量 F
.局部变量 局_组件数量, 整数型
.如果真 (集_自适应_自窗口句柄 = 0)
集_自适应_自窗口句柄 = 自适应窗口.取窗口句柄 ()
.如果真 (集_自适应_自窗口句柄 = 0)
集_自适应_判断 = 假
返回 ()
.如果真结束
局_组件数量 = 窗口_子句柄_枚举_精 (集_自适应_自窗口句柄, 集_自适应_子句柄_数组, , 真) ' 可以用 精益 枚举子句柄 忘记是什么了 窗口_枚举子句柄 好像是这样
.如果真 (局_组件数量 = 0)
集_自适应_判断 = 假
返回 ()
.如果真结束
.如果真 (局_组件数量 = 0)
返回 ()
.如果真结束
窗口_矩形 (集_自适应_自窗口句柄, 主窗口矩形)
集_自适应_主窗口_宽度 = 主窗口矩形.右边 - 主窗口矩形.左边
集_自适应_主窗口_高度 = 主窗口矩形.底边 - 主窗口矩形.顶边
.计次循环首 (局_组件数量, F)
窗口_矩形 (集_自适应_子句柄_数组 [F], 组件矩形)
加入成员 (集_自适应_左边, 组件矩形.左边 - 主窗口矩形.左边 - 10)
加入成员 (集_自适应_顶边, 组件矩形.顶边 - 主窗口矩形.顶边 - 30)
加入成员 (集_自适应_右边, 组件矩形.右边 - 组件矩形.左边)
加入成员 (集_自适应_底边, 组件矩形.底边 - 组件矩形.顶边)
.计次循环尾 ()
F = 0
集_自适应_判断 = 真
.如果真结束
.如果真 (集_自适应_判断 = 假)
信息框 (“出现错误”, 0, , )
返回 ()
.如果真结束
窗口_矩形 (集_自适应_自窗口句柄, 主窗口矩形)
局_主窗口宽度 = 主窗口矩形.右边 - 主窗口矩形.左边
局_主窗口高度 = 主窗口矩形.底边 - 主窗口矩形.顶边
局_变化宽度 = 局_主窗口宽度 - 集_自适应_主窗口_宽度
局_变化高度 = 局_主窗口高度 - 集_自适应_主窗口_高度
局_宽度系数 = 局_主窗口宽度 ÷ 集_自适应_主窗口_宽度
局_高度系数 = 局_主窗口高度 ÷ 集_自适应_主窗口_高度
局_数量 = 取数组成员数 (集_自适应_子句柄_数组)
.计次循环首 (局_数量, F)
窗口_矩形 (集_自适应_子句柄_数组 [F], 组件矩形)
.如果 (局_主窗口宽度 < 集_自适应_主窗口_宽度 ÷ 2)
补宽 = -(10 - 局_宽度系数)
.否则
补宽 = 局_宽度系数
.如果结束
.如果 (局_主窗口高度 < 集_自适应_主窗口_高度)
补高 = -(30 - 局_高度系数)
.否则
补高 = 局_高度系数
.如果结束
组件_左边 = 集_自适应_左边 [F] × 局_宽度系数 + 补宽
组件_宽度 = 集_自适应_右边 [F] × 局_宽度系数 + 补宽
组件_顶边 = 集_自适应_顶边 [F] × 局_高度系数 + 补高
组件_高度 = 集_自适应_底边 [F] × 局_高度系数 ' + 补高
.如果真 (组件_高度 < 20)
组件_高度 = 20
.如果真结束
.如果真 (组件_左边 < 1)
组件_左边 = 1
.如果真结束
补足 = 70 ' -------------------------------------------------------------------------这里可以调试改最优
' 调试输出 (组件_顶边 + 组件_高度 - 局_主窗口高度)
.如果真 (组件_顶边 + 组件_高度 + 补足 ≥ 局_主窗口高度) ' 32补足
.如果 (组件_顶边 < 补足)
组件_顶边 = 组件_顶边 - 补足 ÷ 5
.否则
组件_顶边 = 组件_顶边 - 补足 ÷ 10
.如果结束
.如果真结束
.如果真 (组件_顶边 < 1)
组件_顶边 = 1
.如果真结束
窗口_移动_可以改变大小 (集_自适应_子句柄_数组 [F], 组件_左边, 组件_顶边, 组件_宽度, 组件_高度) ' 可以用这个 MoveWindow
.计次循环尾 ()
|
|