MSFlexGrid,我在CLICK事件中触发TXT显示并与单元格大小相等以实现帮定效果
    TxtInput.Top = FGrid.CellTop + 240
    TxtInput.Left = FGrid.CellLeft + 120
    TxtInput.Height = FGrid.CellHeight
    TxtInput.Width = FGrid.CellWidth
    TxtInput.Text = FGrid.Text
    TxtInput.Visible = True
    TxtInput.SetFocus
现在点击一单元格,TXT显示,然后拖动此行或者此列的大小,发现TXT大小并没有随着单元格大小变化(能否捕捉行列大小改变的事件?)
如何解决这一问题

解决方案 »

  1.   

    如果要用MSFlexGrid的话
    用click事件是不行的我现在能想到的是用lostfocus事件--但是需要点击其他部分后生效
              或者mousemove事件--在msflexgrid上移动即生效
      

  2.   

    据说 redraw 属性设为true 然后在改变大小时他会重画自己
    在paint事件里可以捕捉到 
    但是具体怎么弄???
      

  3.   

    在TxtInput的LostFoxus事件中加TxtInput.Visible = False
      

  4.   

    加入的地方应该不对,应该是在MSFlexGrid的触发实践中加,网上有源码,你查查,下下来改下就是了
    给你个我下的例子
    '设定TextBox於MSFlexGrid1的Current Cell上
    Private Sub toEditGrid(ByVal c As Integer, ByVal R As Integer)
       On Error Resume Next
    With MSFlexGrid1
       .col = c: .row = R
       Text1.Left = .Left + .ColPos(c)
       Text1.Top = .Top + .RowPos(R)
       If .Appearance = flex3D Then
          Text1.Left = Text1.Left + 2 * Screen.TwipsPerPixelX
          Text1.Top = Text1.Top + 2 * Screen.TwipsPerPixelY
       End If
       Text1.Width = .ColWidth(c)
       Text1.Height = .RowHeight(R)
       Text1.Text = .Text
       OldText = .Text
       OldRowE = R
    End With
    Text1.Visible = True
    Text1.SelStart = Len(Text1.Text)
    Text1.SetFocus
    End Sub
      

  5.   

    请问是在什么时候触发执行这段代码?我现在就是不知道怎么捕捉GRID的行列大小变化事件
      

  6.   

    MSFlexGrid1_SelChange 可以吗?
      

  7.   

    这个效果不理想的,其中列宽改变,列表滚动都没办法重绘
    如果你在Text显示的时候把列表的Enabled设置为False 
    那么是不是就好控制了?