精易论坛

标题: [原创+方法]高级表格自动调整列宽 完美显示效果 可实现读取导入所有数据自动调列宽 [打印本页]

作者: 377671771    时间: 2015-2-14 04:34
标题: [原创+方法]高级表格自动调整列宽 完美显示效果 可实现读取导入所有数据自动调列宽
本帖最后由 377671771 于 2015-2-14 05:37 编辑

真的超好用哦,这个是高级表格的自动调列宽,不是超级列表框



四行代码看着很简单,但是通过它就能写出很多全自动高级功能。
只需四行代码!两行变量声明不算哦,因为完全可以不要那两个变量的。


简单四行代码,能够实现高级功能。怎么写高级功能那就要看你的了,这是核心代码。
并且全网搜索,除了我这个,就只有易官方论坛10年前的两个帖子是关于,自动调整高级表格列宽功能的。
绝对原创,易官方论坛也是我发的。
如果你的软件在使用高级表格的话用这个写法将会使文本数据更美观!



说说为什么要单独给高级表格自动调列宽
因为在高级表格上,用普通的写法根本没法实现完美的自动调列宽,即使用易官方论坛的两个源码 模块 也会在文字后面出现空白长尾巴


易官方论坛的上面那两个帖子年代久远到有将近10年之久,一个是源码,一个是模块,但是实际用到显示出的效果就是会在文字后面出现空白长尾巴,而且是文本越长,尾巴越长。全网搜索除了这两个帖子,其它就没有找到好的方法了。而我的这四行代码就完美解决了,调列宽后带有空白尾巴的问题。



高级表格的文本数据在显示出来后,看着是和其它窗口组件字体大小一样大小,但其实他的字体大小是和其它组件字体大小不一样的。窗口组件的字体基本都默认的是“宋体”,字体尺寸基本都默认的9;而高级表格的默认字体不但不是宋体”,而且字体尺寸也不是9!这就是为什么,在不换字体和尺寸的情况下,怎么调列宽度怎么乱的原因。
通过修改高级表格的字体与大小尺寸,在通过画板得到文本实际的长宽度,然后在通过一定的数字比例计算,就能够将高级表格的“显示出来后的文本”和单元框完美显示,没有尾巴,不会被覆盖。



通过这几行核心代码就能够写出导入或读取数据后,自动调全部的文本数据单元框列宽功能,不会因为数据文本长度不一导致很多字被覆盖看不到。看这个精易编程助手的高级表格,的截图就知道我说的文字看不到是什么意思了



所谓的自动调列宽,就是将单元框的列宽度,根据文本的长度自动调整到宽度相同,将文字全部显示出来。如果文本很长的话,可以加个判断,限制住最大的列宽就行了。


更详细的说明:
' 画板.字体.字体名称 = “宋体”  ' 画板默认就是“宋体”可以不写,若换其它字体的话,就必须要画板和高级表格字体一致
高级表格.置字体名 (行, 列, , , “宋体”)  ' 必须写出来,高级表格默认的字体不是宋体
高级表格.置字体尺寸 (行, 列, , , 四舍五入 (画板.字体.字体大小 × 1.33, ))  ' 这个1.33只测试了“宋体”和“黑体”自动换算列宽完美显示,只测试了“微软雅黑”不适合
高级表格.置边距 (行, 列, , , 0)
高级表格.置列宽 (列, 画板.取宽度 (高级表格.取数据(行, 列)) + 2)  ' 列宽最后的“2”意思是要大于单元格边距1到3,否则最后一个字会和框线重合
' 如果使用的字体不是宋体和黑体,就要自己算一下。应该有很多个字体适合1.33的,我没有测试
' 上面1.33的算法很简单,先将高级表格“显示出来后”的字体大小 调到和画板字体大小一致了,然后用高级表格的“实际字体大小”除以画板字体大小
' 为什么要先手动调呢?因为高级表格显示出来后的字体大小,是和其它的窗口组件的字体大小不一样


高级表格自动调整列宽-字体大小换算方法.rar (2.27 KB, 下载次数: 1287)







作者: 倣課诟尐哖    时间: 2015-2-14 07:40
谢谢分享啊
作者: zzzzzzzz88    时间: 2015-2-14 08:10
支持一下!!!
作者: lj836263698    时间: 2015-2-14 08:13
look look!
作者: 撩唇笔    时间: 2015-2-14 08:52
很好的源码
作者: 夜的静night    时间: 2015-2-14 08:57
thanks了  看看
作者: 阿疯C    时间: 2015-2-14 10:10
很简单,不过还是支持
作者: InstallTest    时间: 2015-2-14 10:37
这个不错,学习了。
作者: 凝望远方    时间: 2015-2-15 16:22
这个要看看
作者: huazhao520    时间: 2015-2-15 16:31
支持LZ,进来学习学习
作者: myxf    时间: 2015-2-15 20:48
谢谢分享,收藏学习。
作者: 晓风残月丶    时间: 2015-2-19 16:28
什么东东
作者: linyuntai    时间: 2015-4-12 14:28
下载页面做什么会跳到114的网页上?
作者: iouyjl    时间: 2015-5-7 19:37
好像很牛的样子哈
作者: 我是谁的谁    时间: 2015-5-29 22:24
多谢,收下看看。
作者: dalvy    时间: 2015-6-7 22:39
好像很牛的样子哈
作者: 流星雨季    时间: 2015-12-22 16:46
好像很牛的样子哈
作者: myselfsky    时间: 2016-2-12 22:42
高,实再是高!!!!!!!!!!!!
作者: 不懂    时间: 2016-2-16 20:33

作者: yufengnigel    时间: 2016-2-21 19:47
回个帖,支持下,大神牛
作者: yuantou001    时间: 2016-3-12 14:10
好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好
作者: dalvy    时间: 2016-4-2 16:01
回个帖,支持下,大神牛

作者: gto250    时间: 2016-4-3 23:06
之前下了一个可以同时支持文字和图片的,这个再下下来看看是怎么样的
作者: ssff5678    时间: 2016-4-20 21:34
试一下,有没有这么神奇
作者: skyme96    时间: 2016-5-2 16:01
好神奇,谢谢楼主分享
作者: Owliver    时间: 2016-5-6 16:47
十分感谢。。。。
作者: 8554308    时间: 2016-8-9 12:56
感谢楼主大大
作者: wztg52    时间: 2016-11-5 16:55
学习学习...................
作者: liangshenda    时间: 2016-11-27 20:41
学习学习...................
作者: 甲林163    时间: 2016-12-14 16:53
不错,谢谢开源
作者: f22    时间: 2017-3-4 14:16
我就想问下  多行记录时, 怎么取某内容最长一格的长度?
比如:
第一行:土土土土土土土土土土
第二行:aaaaaaaaaa
列宽怎么定?
作者: heverst    时间: 2017-4-1 11:12
试一下,有没有这么神奇
作者: sccox2012    时间: 2017-4-9 20:10
你好~~都是打死多所大所多
作者: ifcapple    时间: 2017-4-27 16:21
感谢楼主分享,先感谢,再测试
作者: 希望在田野    时间: 2017-4-27 17:55
感谢楼主分享,先感谢,再测试
作者: xlbxl    时间: 2017-4-30 20:18

学习学习...................
作者: hai20041004    时间: 2017-5-7 10:33
正找着呢,谢谢楼主………………
作者: 蒋工电脑手机维    时间: 2017-6-15 17:59
有没有想过输入一格后 表格长度变了 后面继续输入个短的文本怎么办呢
作者: 小泥鳅练易经    时间: 2017-6-25 14:23
这么牛的模块必须得瞅瞅
作者: ﹏゛杺碎    时间: 2017-6-28 16:21
来学习学习
作者: 幕夜思晨ii    时间: 2017-7-1 19:32
0.0
唉!~!~!
作者: 幕夜思晨ii    时间: 2017-7-2 17:53
每次都要收费...
作者: Mr.伍先生    时间: 2017-7-3 23:56
感谢大佬无私分享
作者: imoling    时间: 2017-8-5 20:31
先收藏。。到时候看看需要不要
作者: imoling    时间: 2017-8-5 20:41
。。。没什么用呀。我是直接赋值。没有编辑,也禁止编辑,知想读取的时候自动。所以还是不能设置- -
作者: regsvr    时间: 2017-9-4 10:38
感谢大佬无私分享
作者: dfss94022799    时间: 2017-10-14 19:21
看了不顶不是我的作风
作者: 421024002    时间: 2017-12-27 12:28
学习一下!谢谢大神
作者: bachelor66    时间: 2018-1-4 15:50
这个看着很高级的样子啊               
作者: hqz630    时间: 2018-1-27 16:32
来看看,好像不错的

作者: nrh    时间: 2018-2-6 09:28
谢谢分享!进来学习下!
作者: fjsmnhdxg    时间: 2018-3-24 20:27
学习一下。。。
作者: 彐火因心    时间: 2018-4-14 19:51
先收藏一下,需要了再来。

作者: yagu147    时间: 2018-6-12 17:50
垃圾呀! 仅靠当前单元格开判断  不是整列
作者: 零度狀態    时间: 2018-7-1 14:45
学习一下!!!!
作者: lingang    时间: 2018-7-7 16:09
感谢分享!
作者: zyong109    时间: 2018-7-25 20:56
好东西,必须赞一个
作者: Aj.潮流系の冰    时间: 2018-8-4 00:28
谢谢分享!进来学习下!
作者: ysl520    时间: 2018-9-30 16:01
正用的上。。。
作者: 554755303    时间: 2018-11-4 14:43
所谓的自动调列宽,就是将单元框的列宽度,根据文本的长度自动调整到宽度相同,将文字全部显示出来。如果文本很长的话,可以加个判断,限制住最大的列宽就行了
作者: altlsb    时间: 2018-11-12 18:47
谢楼主分享,下来学习学习。
作者: redtiger99    时间: 2018-12-9 10:11
善于思考解决问题。
作者: hao3509557413    时间: 2019-1-22 17:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: bocunfeng    时间: 2019-2-7 21:54
学习就得不断的付出,不断的努力,多加练习,成功离你就不远了
作者: ddian    时间: 2019-2-13 08:03
多谢分享,收获不少
作者: atzhfy    时间: 2019-3-24 22:35
感谢楼主无私,下载来看看是怎么用 的
作者: michardhl    时间: 2019-5-6 20:55
新手来学习
作者: 九指    时间: 2019-10-15 21:50
拿来主义,学习中,谢谢分享
作者: hdlan    时间: 2019-10-17 10:29
谢谢分享!!!!!!!
作者: 山梦    时间: 2020-3-13 15:48
回复赚1回复赚1
作者: 看起来就厉害    时间: 2020-3-23 11:41
就在找这个 6666
作者: charlenedl    时间: 2020-4-2 22:16
辛苦啦~~~~~~~~~~
作者: qaxecc    时间: 2020-6-5 14:38
辛苦了~~ 学习学习~~
作者: lu5183    时间: 2020-6-12 14:57
非常厉害,正好需要,感谢
作者: 单色    时间: 2021-4-23 09:54

作者: linfengyaozheng    时间: 2022-4-19 10:20
正好需要
作者: linfengyaozheng    时间: 2022-4-19 10:20
感谢分享
作者: 蓝河笑月    时间: 2022-5-24 20:50
感谢分享,很给力!~
作者: 尐蒂儿    时间: 2022-5-31 20:13
感谢分享,很给力!~
作者: paulz2022    时间: 2022-8-13 22:01

感谢分享,很给力!~
作者: paulz2022    时间: 2022-8-13 22:02

就在找这个 6666
作者: 554755303    时间: 2022-9-15 13:17
学习学习
作者: dwzml    时间: 2022-10-21 21:49

作者: shiren2022    时间: 2022-10-26 11:35
收藏下,学习了,虽然目前不知道用那里
作者: 700    时间: 2022-10-28 03:25
有人拿你的代码卖钱。很生气。
作者: 700    时间: 2022-10-28 03:26
这个代码从数据库读入不行。无法自动调整。
作者: 700    时间: 2022-10-28 03:32
本帖最后由 700 于 2022-10-28 03:34 编辑

好像可以了。谢谢老板
作者: pengzhinan    时间: 2023-1-9 16:05
稍微优化了下:
.版本 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 且 最大列宽 > 最大宽度)
    最大列宽 = 最大宽度
.如果真结束
高级表格.置列宽 (列位, 最大列宽)

作者: hsl123    时间: 2023-3-1 17:06
感谢分享
作者: haibaoyeye    时间: 2023-8-23 18:51
但愿有用
作者: pxianwei    时间: 2024-1-8 23:36
开源精神必须支持~11111
作者: bindy    时间: 2024-6-4 16:07
学习了。。。。。
作者: morning861    时间: 2024-6-30 17:40

辛苦了~~ 学习学习~~
作者: 矜陌    时间: 2024-7-11 01:31
谢谢楼主分享
作者: f15007937680    时间: 2024-10-22 21:27
感谢分享
作者: ylghlzg    时间: 2025-1-16 20:57
666666666666666666
作者: lm88818    时间: 2025-4-1 15:05
        感谢分享,很给力!~
作者: fuzhen11    时间: 4 天前
谢谢,下载学习




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4