|
发表于 2023-1-9 16:05:48
|
显示全部楼层
重庆市重庆市
稍微优化了下:
.版本 2
.支持库 eGrid
.程序集 窗口程序集1
.子程序 _高级表格_结束编辑
.局部变量 行, 整数型
.局部变量 列, 整数型
行 = 高级表格.取光标行号 ()
列 = 高级表格.取光标列号 ()
画板1.字体.字体名称 = “宋体” ' 画板默认就是“宋体”可以不写,若换其它字体的话,就必须要画板和高级表格字体一致。
高级表格.置字体名 (行, 列, , , “宋体”) ' 必须写出来,可能高级表格默认的字体不是宋体。
高级表格.置字体尺寸 (行, 列, , , 四舍五入 (画板1.字体.字体大小 × 1.33, )) ' 这个1.33只测试了“宋体”和“黑体”自动换算列宽完美显示,只测试了“微软雅黑”不适合。
高级表格.置边距 (行, 列, , , 0)
高级表格_调整宽度 (高级表格, 列, 80, 画板1)
' 高级表格.置列宽 (列, 画板.取宽度 (高级表格.取数据 (行, 列)) + 2) ' 列宽要大于单元格边距1到3,否则最后一个字会和框线重合。
' 如果使用的字体不是宋体和黑体,就要自己算一下了。应该有很多个字体适合1.33的,我没有测试。
' 上面1.33的算法很简单,先将高级表格“显示出来后”的字体大小 调到和画板字体大小一致了,然后用高级表格的“实际字体大小”除以画板字体大小。
' 为什么要先手动调呢?因为高级表格显示出来后的字体大小,是和其它的窗口组件的字体大小不一样的!
.子程序 高级表格_调整宽度
.参数 高级表格, 高级表格
.参数 列位, 整数型, , 列的位置
.参数 最大宽度, 整数型, 可空, 默认不设置最大宽度,最好设置最大宽度,避免难看
.参数 画板, 画板, , 用于计算字体大小,任意位置,可视可为假
.局部变量 列数, 整数型
.局部变量 行数, 整数型
.局部变量 局_i, 整数型
.局部变量 最大列宽, 整数型
.局部变量 当前宽度, 整数型
行数 = 高级表格.行数
最大列宽 = 0
.计次循环首 (行数, 局_i)
当前宽度 = 画板.取宽度 (高级表格.取数据 (局_i - 1, 列位)) + 2
.如果真 (当前宽度 > 最大列宽)
最大列宽 = 当前宽度
.如果真结束
.计次循环尾 ()
.如果真 (最大宽度 > 0 且 最大列宽 > 最大宽度)
最大列宽 = 最大宽度
.如果真结束
高级表格.置列宽 (列位, 最大列宽)
|
|