| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2449 人关注过本帖
标题:如何设置表或查询表的显示宽度?
只看楼主 加入收藏
su0527
Rank: 2
等 级:论坛游民
帖 子:452
专家分:79
注 册:2015-1-10
结帖率:96.03%
收藏
已结贴  问题点数:16 回复次数:11 
如何设置表或查询表的显示宽度?
比如:有表:xsxx.dbf ,其中有字段:cb,xm...;
cb,xm  在表中指定的宽度为20;实际中很少用到这样的宽度,全显示出来既不美观,又浪费空间,不便于浏览;
所以在浏览该表或对该表查询时每个字段只显示指定宽度(比如宽度为8)就行了.
求指点.
搜索更多相关主题的帖子: 如何 空间 
2016-01-27 21:35
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:3 
SELECT cb,xm FROM xsxx INTO CURSOR temp readw
ALTER TABLE temp alter COLUMN cb c(8)
查询后修改
2016-01-27 22:42
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:3 
显示宽度有好多种,用什么方式来显示这些数据?
2016-01-27 22:48
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:3 
有些东西必须自己探索规律。比如:我一般将Grid设置为等宽字体“宋体”,FontSize设为默认的“9”。设列标题的字符数为 m,该列需显示的字符数为 n,则可将列宽设置为 max(m,n)*6 + 4。

比如:列标题为“型号规格”,为 8 个(英文)字符,若该列想显示字段的前 12 个字符,则可将列宽设置为:max(8,12)*6+4=12*6+4=72+4=76。

说明:1. 列标题须显示完整;2. 表达式中的 4 是在显示内容的两边预留少许空白

[此贴子已经被作者于2016-1-28 08:48编辑过]


泉城飞狐
2016-01-28 08:42
antony521
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:170
专家分:175
注 册:2009-8-20
收藏
得分:3 
回复 4楼 liuxingang28
“宋体”,FontSize设为默认的“9”时的宽度是6,FontSize设为默认的“10”时的宽度是多少?现在显示器的分辨率高用的字号会大点,干脆教一下11\12等的宽度怎样得到.多谢!
2016-01-28 08:58
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:3 
以下是引用antony521在2016-1-28 08:58:22的发言:

“宋体”,FontSize设为默认的“9”时的宽度是6,FontSize设为默认的“10”时的宽度是多少?现在显示器的分辨率高用的字号会大点,干脆教一下11\12等的宽度怎样得到.多谢!

好像有个测试,字号对应的方法的。

这个,是吹水斑竹写的。FONTMETRIC就是,不知道能不能用在这里
of = CREATEOBJECT("form1")
of.show(1)

DEFINE CLASS form1 as Form
    AutoCenter = .T.
    ADD OBJECT list1 as ListBox WITH top=10,left=10,RowSourceType=1,;
        RowSource="101,202,303,404,505,606,707,808,909,202,303,404,505,606,707,808,909,202,303,404,505,606,707,808,909"
   
    PROCEDURE list1.MouseMove(nButton, nShift, nXCoord, nYCoord)
        nRowHeight = FONTMETRIC(1, this.FontName, this.FontSize);
                   + FONTMETRIC(3, this.FontName, this.FontSize) + 2
                  
        nRow = INT((nYCoord - this.Top - 2) / nRowHeight)
        this.ListIndex = nRow + this.TopIndex
    ENDPROC
ENDDEFINE

[此贴子已经被作者于2016-1-28 09:17编辑过]

2016-01-28 09:13
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:0 
回复 5楼 antony521
我是这样找规律的:
1. 将表格的列标题删除以排除列标题的影响
2. 在表单上添加一个按钮,在其Click事件中输入显示列宽的代码:messagebox(thsiform.grid1.columns[1].width)
3. 运行表单
4. 在第一列输入一个字符,如:1,然后双击列标题右侧的分隔线,使该列自动调整到最适合宽度
5. 单击按钮,记下宽度,如:10
6. 继续第4、5步,逐个增加字符数。比如,当我输入两个字符时,宽度是 16。由此可以得出每个字符的宽度为 16 - 10 = 6,而多余的 4 就是预留的空白。

说明:必须将字体设置为等宽字体,这样字符数与列宽才是有规律的,否则每个字符的宽度可能不一样(如:M 和 I),无规律可言。

泉城飞狐
2016-01-28 09:17
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用liuxingang28在2016-1-28 09:17:28的发言:

我是这样找规律的:
1. 将表格的列标题删除以排除列标题的影响
2. 在表单上添加一个按钮,在其Click事件中输入显示列宽的代码:messagebox(thsiform.grid1.columns[1].width)
3. 运行表单
4. 在第一列输入一个字符,如:1,然后双击列标题右侧的分隔线,使该列自动调整到最适合宽度
5. 单击按钮,记下宽度,如:10
6. 继续第4、5步,逐个增加字符数。比如,当我输入两个字符时,宽度是 16。由此可以得出每个字符的宽度为 16 - 10 = 6,而多余的 4 就是预留的空白。

说明:必须将字体设置为等宽字体,这样字符数与列宽才是有规律的,否则每个字符的宽度可能不一样(如:M 和 I),无规律可言。

很实用啊。
对了,如果表字段内容不一样长,是不是先要取每个字段的最大长度?如
select max(len(字段1)) as 字段1,max(len(字段2)) as 字段2,max(len(字段3)) as 字段3 from 表1
利用这个来定义grid的宽度。。。。
2016-01-28 09:22
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:0 
其实通过 FONTMETRIC(6,'宋体',9)函数也可以得出 FontSize=9 时宋体的平均宽度,显示结果为 6。

FONTMETRIC(6,'宋体',9) 中的“6”表示字体的平均宽度,“宋体”为字体,“9”为 FontSize

泉城飞狐
2016-01-28 09:27
antony521
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:170
专家分:175
注 册:2009-8-20
收藏
得分:0 
2016-01-28 09:31
快速回复:如何设置表或查询表的显示宽度?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032641 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved