datagrid的列怎么样设置才能根据列的内容自动调整列宽?

kylinhome 2004-11-10 07:22:27
datagrid的列怎么样设置才能根据列的内容自动调整列宽?
...全文
260 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
inbreak 2004-12-01
  • 打赏
  • 举报
回复
个是mshflexgrid的,你改一下就可以了~~~
思路就是取样抽最大的字长做为列宽~~~

效率好像比较慢哦,如果有几千行,比到什么时间候?而且如何改变了字体大小,那样又不行了。


对啊,所以如果抽样太少又可能有误~~~~~~~~
我现在都是直接固定设置它的列宽了~~~
各位有什么有的建议~!~~~
normandj 2004-11-30
  • 打赏
  • 举报
回复
个是mshflexgrid的,你改一下就可以了~~~
思路就是取样抽最大的字长做为列宽~~~

效率好像比较慢哦,如果有几千行,比到什么时间候?而且如何改变了字体大小,那样又不行了。
nt198 2004-11-27
  • 打赏
  • 举报
回复
还没看清啊
nt198 2004-11-27
  • 打赏
  • 举报
回复
datagrid1.col=列号
你用len$(datagrid1.text)看看有几个字符,再算算一个字符有多宽,一算就是了
chinaheroliu 2004-11-27
  • 打赏
  • 举报
回复
太复杂了!
inbreak 2004-11-27
  • 打赏
  • 举报
回复
这个是mshflexgrid的,你改一下就可以了~~~
思路就是取样抽最大的字长做为列宽~~~

Private Sub Command1_Click()
'根据数据调整列宽
Dim intColWidthTemp As Integer, intColWidth As Integer, intEnd As Long
Dim strCol2 As String
Dim i As Integer, ii As Integer
'i = 1: ii = 1

intEnd = MSHFlexGrid1.Rows - 1 '下越标
If intEnd = 0 Then Exit Sub
If intEnd > 50 Then intEnd = 50

For ii = 0 To MSHFlexGrid1.Cols - 1
intColWidth = TextWidth(MSHFlexGrid1.TextMatrix(i, ii)) '第一行的宽度
For i = 0 To intEnd - 1 '抽N行取样
intColWidthTemp = TextWidth(MSHFlexGrid1.TextMatrix(i + 1, ii)) '第N行的宽度
If intColWidthTemp > intColWidth Then intColWidth = intColWidthTemp '取最大的宽度
Next
intColWidthTemp = TextWidth(MSHFlexGrid1.ColHeaderCaption(0, ii))
If intColWidthTemp > intColWidth Then intColWidth = intColWidthTemp '如果最大宽度小于标题宽度就取标题宽度
MSHFlexGrid1.ColWidth(ii) = intColWidth + 300

Next

End Sub
kylinhome 2004-11-27
  • 打赏
  • 举报
回复
up
kylinhome 2004-11-21
  • 打赏
  • 举报
回复
up

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧