VB6中如何使MSHFlexGrid选中行反色显示?

  VB6中的MSHFlexGrid控件功能较强,在设置了BackColorSel以及ForeColorSel属性,并且允许整行选择时,被选中行就会按照设置的颜色完成反色显示效果,但是,当设置了允许行列合并时,此效果就失去了作用。那么,是不是鱼和熊掌不能兼得呢?
  不是的,今天在朋友小巧玲珑的帮助下,终于实现了“鱼和熊掌兼得”!现将实现之方法记录于此,同大家共享,并再次答谢小巧玲珑的热心帮助!

  一、实现的思路:
  1、设计时,先设置好MSHFlexGrid控件的BackColor、BackColorSel以及ForeColorSel属性,当然你也可以使用其默认颜色。设置其填充方式为1-Repeat,选择模式为1-By Row,焦点区域为0-None。
  2、当通过鼠标或者光标键选中某行时,先把它的背景色以及行号保存在变量中,以便此行不被选中时恢复。然后使用代码改变该行背景色以及前景色。当然,如果所有行的背景色及前景色是相同的,不用保存它们的背景色及前景色,恢复时恢复到你设置的统一默认值即可。
  3、把改变背景色及前景色的关键代码放进MSHFlexGrid控件的RowColChange()事件中。

  二、参考代码(将如下代码放在MSHFlexGrid控件的RowColChange()事件中):

Dim vRow As Long  '保存当前被选中行
With Me.MSHFlexGrid1
  vRow = .Row
  .Row = myRow  '上次被选中的行号,或初始设置的行号
  vCol = .Col
  .Col = 0
  .ColSel = .Cols - 1
  .CellBackColor = myRowBackColor  '上次被选中行的背景色,或初始设置行号相应的背景色
  .CellForeColor = .ForeColor              
  .Row = vRow
  myRowBackColor = .CellBackColor  '将当前被选中行背景色保存变量中
  .Col = 0
  .ColSel = .Cols - 1
  '设置被选中行按设置的反色方案显示背景色及前景色
  .CellBackColor = .BackColorSel
  .CellForeColor = .ForeColorSel
  myRow = .Row
End With

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值