MSFlexGrid问题

问题一:MSFlexGrid内容显示不全



解决方法:让MSFlexGrid的大小根据字段的大小自动调节


Public Sub AdjustColWidth(frmCur As Form, gridCur As Object, Optional bNullRow As Boolean = True, Optional dblIncWidth As Double = 0)
  '--------------------------------------------------------------------
  '功能:
  '              自动调整Grid各列列宽为最合适的宽度
  '参数:
  '              [frmCur].........................................当前工作窗体
  '              [gridCur]........................................当前要调整的Grid

  '--------------------------------------------------------------------
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


这是自动调节列宽的函数,所以在使用的过程中要调用

 Call AdjustColWidth(frmstudentcheckpay, myflexgrid)

注意:MSFlexGrid的字体大小要与窗体的字体大小相同


问题二:累计添加记录,没有刷新



解决方法:每次添加记录都从第二行开始,因此单击事件后的数据会覆盖上次的记录



设置初始行为1,进行下面的循环,就会使记录从第二行开始添加


总结:这两个问题看起来很简单,但刚开始解决用了很长时间,主要是败在了战略问题上,有句话不是叫做“知己知彼才能百战不殆”,刚开始遇到问题就去盲目地查,结果还是没有解决问题,其实首先应该先去了解MSFlexGrid的属性、方法等,知道了它的用法,才能更好地去解决问题,所以我总结了一下关于MSFlexGrid控件相关知识。


主要属性:

(1)Rows与Cols属性:分别用于设置或返回MSFlexGrid控件的行数与列数。
(2)Row与Col属性:分别用于设置或返回MSFlexGrid控件中活动单元的行号与列号。
(3)TextMatrix属性:该属性用于表示MSFlexGrid控件中单元格的内容。
           格式为:TextMatrix (Row, Col);
           其中Row与Col分别表示单元格在MSFlexGrid控件中的行号与列号。
(4)FixedRows属性:用于设置表格显示过程中固定不变的行数。如FixedRows=1,则表示固定行为1
(5)FixedCols属性:用于设置表格中固定不变的列数。如FixedCols=1,则表示固定列为1

(6)MouseRow与MouseCol属性:用于返回鼠标光标所在单元格的行号与列号。
(7) ColWidth(Col)、RowHigh(Row)属性:用于设置与返回第Col列的宽度与第Row行的高度,例如设置第0列的           宽度为1500,第0行的高度为300的赋值语句为:
     ColWidth(0) = 1500
     RowHeight(0) = 300
(8)DataSource属性:用于选择数据表,只能通过Data数据源控件选择数据表。
     说明,若要用ADO Data控件作为数据源,则应使用MSHFlexGrid控件。

主要方法:

   .RemoveItem(在MSFlexGrid控件中删除一行)

   .AddItem(在MSFlexGrid控件中添加一个新行)

   .clear(清除MSFlexGrid控件所有单元格中内容)

   .Refresh(刷新内容)

   .setFocus(获得焦点)

主要事件:

    KeyPress事件:当用户按下或释放任何一个ANSI键(字母或数字等键)时触发

    KeyDown事件:当用户按下一个键时触发

    KeyUp事件:当用户放开任何一个键时触发

    MouseUp事件:当用户放开鼠标时触发。
    MouseDown事件:当用户按下鼠标触发

    EnterCell与LeaveCell事件:在进入一个单元格时触发EnterCell事件,在离开一个单元格时触发LeaveCell事件








  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值