百思不解的问题
谁能让DATAGRID 的列宽自动随记录的宽度变化。
It is very important for me .
Thank a lot.
问题点数:20、回复次数:13Top
1 楼leonnet(里奥下的天空)回复于 2001-05-22 15:05:00 得分 0
关注Top
2 楼ouyangke(欧阳克)回复于 2001-05-22 15:06:00 得分 0
gzTop
3 楼kevin_gao(困了!累了!睡觉了!)回复于 2001-05-22 16:29:00 得分 3
With Me.DBGrid1
.Columns(i).Width=len(某条记录)*(每个字符的点数)
End with
其中i是你要改变的列号Top
4 楼liu_feng_fly(笑看风云 搏击苍穹 衔日月)回复于 2001-05-22 16:40:00 得分 1
有field(i).widthTop
5 楼zwbs(雕牌洗衣皂)回复于 2001-06-04 15:43:00 得分 0
请问,每个字符的点数是固定的还是变化的,是多少?
Top
6 楼OLD_VB_FAN(蓝星)回复于 2001-06-04 16:26:00 得分 0
GZTop
7 楼liu_feng_fly(笑看风云 搏击苍穹 衔日月)回复于 2001-06-04 18:09:00 得分 0
什么意思?Top
8 楼unruledboy(六月飞霜!)回复于 2001-06-04 19:29:00 得分 1
基本同意kevin_gao(天堂的耗子) 的说法Top
9 楼zwbs(雕牌洗衣皂)回复于 2001-06-05 16:04:00 得分 0
据我所知,在 Windows 中字符的点数(横向宽度)是不同的Top
10 楼l_you()回复于 2001-06-05 18:13:00 得分 0
zwbs(傻大胆)说的不完全正确。
应该是中文占两个屏幕的单位,英文占一个。可做如下判断。
dim i as integer
dim j as integer
dim intLen as integer
dim strTemp as string
strTemp="abcd发法"
j=len(strTemp)
for i=1 to j
if asc(mid(strTemp,i,1))<0 then '或者 Len(Hex(Ascmid(strTemp,i,1))))=4
intLen=intLen + 2
else
intLen=intLen + 1
end if
next
这样,intLen为混合长度。
With Me.DBGrid1
.Columns(i).Width=intLen*(每个字符的点数)
End with
Top
11 楼l_you()回复于 2001-06-05 18:13:00 得分 5
zwbs(傻大胆)说的不完全正确。
应该是中文占两个屏幕的单位,英文占一个。可做如下判断。
dim i as integer
dim j as integer
dim intLen as integer
dim strTemp as string
strTemp="abcd发法"
j=len(strTemp)
for i=1 to j
if asc(mid(strTemp,i,1))<0 then '或者 Len(Hex(Ascmid(strTemp,i,1))))=4
intLen=intLen + 2
else
intLen=intLen + 1
end if
next
这样,intLen为混合长度。
With Me.DBGrid1
.Columns(i).Width=intLen*(每个字符的点数)
End with
Top
12 楼zwbs(雕牌洗衣皂)回复于 2001-06-16 03:07:00 得分 0
请问:字符 L and 1 占的列宽是一样的吗?Top
13 楼LiuJunjiang(蓝精灵)回复于 2001-06-16 07:53:00 得分 10
哈哈,这次没来晚
可以用Textwidth函数取得i列所有行字符串中宽度的最大值
然后赋给DataGrid.Columns(i).width
根据经验可能稍微要窄一些,只要价格常量给他就行
BTW:宽度单位只能是Tips
Top




