在VB6.0中禁用MSHFlexGrid中的列

时间:2009-05-22 05:25:39

标签: vb6 activex

如何在VB6.0中禁用MSHFlexgrid中的特定列?我不希望我的用户编辑特定列中的值。

2 个答案:

答案 0 :(得分:3)

我认为MSHFlexGrid控件不允许用户首先编辑其数据。因此,实际上,所有列都被禁用。完成工作:))

实际上,您必须添加自定义代码才能启用更新,例如添加一个 允许编辑的适当控件(文本框,组合,日期选择器等),在设计时隐藏它,然后在运行时检测哪个网格单元应该有焦点,移动并调整控件的大小适合单元格然后使其可见然后处理事件以验证输入然后将内容写回记录集...

...或者您可以购买第三方控件来完成所有这些操作。随VB6一起提供的MSHFlexGrid本质上是VSFlexGrid Pro的缩减版本,我已经使用并且认为非常好。它有一种不同的方法来处理分层数据,通过创建优秀的IMO组(而不是乐队)。关于MSHFlexGrid可以说的最好的事情是它很容易绑定到分层ADO记录集来简单地显示结果,但如果你想做好格式化或使网格可编辑则不好。 VSFlexGrid Pro,如果你负担得起,它有更多的功率,例如您可以创建数据源类来处理与自定义数据结构的绑定(附带VB6示例,包括ADO记录集绑定),如果您打算使分层网格可编辑,这将是非常宝贵的IMO。

答案 1 :(得分:0)

'快捷方式就在这里......不是以正确的方式。但你可以尝试

'如果您需要锁定前3列,请使用以下代码:

msf2=name of MSFlexGrid
Private Sub msF2_EnterCell()
With msF2
    If msF2.Col = 0 Or msF2.Col = 1 Or msF2.Col = 2 Then
        msF2.Col = 3
    End If
End With
End Sub