VB MSFlexGrid控件使用问题

1、自动选中某一行,设置好 selectionmode、backcolorsel、等属性

  msfg.row=1:  msfg.col=0:  msfg.colsel=msfg.cols-1

============================================================

2、.TextMartix(row,col)  的方式 效率上优于 .row: .col : .Text 的方式

============================================================

3、对Up、Down、PgUp、PgDn、Ctr+Up、Ctr+Dn键的响应问题

  (1) 正常情况下,按下上述键,表格的焦点行,会自动跳转,并且焦点行,始终在界面上可见

  (2) 如果在MSFG的RowColChange 或 EnterCell事件中对MSFG单元格的处理(用到了.row,.col去处理某些问题),这些影响到了上述键的使用,

    问题:焦点行会自动跳转,但界面上并不可见-------------应该是MSFG控件本身的问题

    解决:可以根据旧焦点行(oldRow),与当前焦点行(curRow),及2者差值(Abs(curRow-oldRow)),手动改变.TopRow属性

    

参照-----------------------
'
-----修改表格按键改变行,选中行在界面不可见问题----- If Abs(curRow - oldRow) = 1 Then 'Up ,Down 键 If curRow < oldRow Then If Not .RowIsVisible(curRow) Then '---------------Up .TopRow = .TopRow - 1 End If ElseIf curRow > oldRow And curRow < .Rows - 1 Then '--Down If Not .RowIsVisible(curRow + 1) Then .TopRow = .TopRow + 1 End If End If ElseIf Abs(curRow - oldRow) > 1 Then If curRow = .Rows - 1 Then '--------------------------Ctr+Down .TopRow = .Rows - 1 ElseIf curRow = .FixedRows Then '--------------------Ctr+Up .TopRow = .FixedRows ElseIf Not .RowIsVisible(curRow) Then ' If curRow > oldRow Then '-------------------------PgDn If curRow < .Rows - 1 Then .TopRow = oldRow Else .TopRow = .Rows - 1 End If Else '-----------------------------------------PgUp If curRow > .FixedRows Then .TopRow = curRow Else .TopRow = .FixedRows End If End If End If End If

 

posted on 2013-12-18 13:46  xbj_hyml  阅读(317)  评论(0编辑  收藏  举报

导航