在机房收费系统中我接触到MSHFlexgrid 和MSFLexgrid 两种控件,这两个控件的功能很相似,但是还是存在细微的差别
一、
让我们来看一下MSHflexgrid 设置自动调节宽度方式:
充值日期显示不完整,我百度了一下MSHFLexgrid 控件自动调节宽度的代码
<span style="margin: 0px; padding: 0px; border: 0px; background-color: transparent; font-family: FangSong_GB2312;"><span style="font-size:18px;"> Public Sub AdjustColWidth(frmCur As Form, gridCur As Object)
Dim i, j As Integer
Dim dblWidth As Double
With gridCur
For i = 0 To .Cols - 1
dblWidth = 0
If .ColWidth(i) <> 0 Then
For j = 0 To .Rows - 1
If frmCur.TextWidth(.TextMatrix(j, i)) > dblWidth Then
dblWidth = frmCur.TextWidth(.TextMatrix(j, i))
End If
Next
.ColWidth(i) = dblWidth + dblIncWidth + 100
End If
Next
End With
End Sub</span></span>
<span style="font-family:FangSong_GB2312;font-size:18px;"> <span style="font-family: 微软雅黑, 黑体, Verdana; line-height: 24px;">在这个过程要知道form窗体有TextWidth 方法,</span><span style="font-family: 微软雅黑, 黑体, Verdana; line-height: 24px;">Textwidth方法则返回一个文本字符串的宽度值。</span></span>
然后再调出 : Call AdjustColWidth(frmLineHis, myFlexGrid)
别人也是这样实现这个功能的,但是我发现我的窗体运行时却变成了这样:
更加不清晰,后来才发现要把窗体的字体设置的比控件字体的值大才可以,也就是说我的窗体字体设置成三号字那么控件中字体要设置的比三号字小才可以。
对于MSHFLexgrid 我们可以用上面说的方法自动调节高度,也可以设置它的属性ALLowUserResizing 即可 ,
但是对于MSFlexgrid设置了AllowUserResizing 后还要设置 属性页-通用-行调整模式-1 All才可以
设置好属性后在运行时,把鼠标放在网络格间会出现一个箭头可以拉伸,就可以自动的拉伸到自己的想要的长度
还有一种设置单元格宽度的方法 想改变第三列的宽度:MyFlexGrid.ColWidth(2) = 2000 如果需要大量使用自动调节宽度的代码还是调用函数比较好。
二、在学生上机状态查看 删除选定行时 写的代码是 MyFlexGrid.RemoveItem MyFlexGrid.Row
用两种控件就会显示不同的效果 :我设置的控件属性时有一行为固定行 对于MSHFlexgrid,虽然选中学生下线成功了但是删除最后一行时会报错,所以要加限制 if MyFlexGrid.TextMatrix(MyFlexGrid.Row, 0)="卡号" then msgbox"不能删除最后一行!" end i f
对于MSFlexgrid 设置固定行会报错
对于这个问题我们可以不设置固定行 MyFlexGrid.RemoveItem MyFlexGrid.Row
if MyFlexGrid.TextMatrix(MyFlexGrid.Row, 0)="卡号" then msgbox"不能删除最后一行!" end i f
写这两句代码就可以了