网格的文本控件中的代码不会触发

时间:2014-08-12 08:23:19

标签: foxpro visual-foxpro

我尝试从另一个表单上的网格中打开表单。我将我的代码放在我的网格的相应列中的Text控件的DblClick事件中,但没有任何反应。这适用于另一个应用程序,我看不出我的两个表单之间的任何差异。我在俯瞰什么?谢谢。 /伯纳德

3 个答案:

答案 0 :(得分:0)

由于我没有看到MouseDown,MouseUp或Click,我不得不假设你实际上没有点击文本框,或者你没有跟踪列表中的那些方法。这是我在网格单元格中双击时看到的内容:

59739.682, form1.grid1.MouseDown(1, 0, 153, 81)
59739.687, form1.grid1.column2.text1.When()
59739.692, form1.grid1.column2.text1.GotFocus()
59739.692, form1.grid1.column2.text1.Message()
59739.705, form1.grid1.AfterRowColChange(2)
59739.713, form1.grid1.column2.text1.MouseDown(1, 0, 153, 81)
59739.744, form1.grid1.MouseUp(1, 0, 153, 81)
59739.746, form1.grid1.column2.text1.MouseUp(1, 0, 153, 81)
59739.748, form1.grid1.column2.text1.Click()
59739.772, form1.grid1.MouseDown(1, 0, 153, 81)
59739.773, form1.grid1.column2.text1.MouseDown(1, 0, 153, 81)
59739.878, form1.grid1.MouseUp(1, 0, 153, 81)
59739.880, form1.grid1.column2.text1.MouseUp(1, 0, 153, 81)
59739.882, form1.grid1.column2.text1.DblClick()

答案 1 :(得分:0)

我的代码被忽略的原因是因为它不在那里。由于我使用来自表单另一部分的数据填充网格,我必须将其放入网格的初始化“THIS.RecordSouce = ...”,这意味着网格是“rebuit”并且所有PME都在IDE中构建消失了。谢谢AtoutFox的Gregory。谢谢你们在这里回答的所有问题。 /伯纳德

答案 2 :(得分:0)

先生。伯纳德

我也遇到了同样的问题。我已经使用VFP9多年了,并且在网格文本框中使用事件Keypress没有任何问题。突然之间,到2014年8月底,如果我们将常规放入网格文本框Keypress事件中,所有新网格都不会做出响应。奇怪的是,几周前创建的所有Keypress活动仍然运作良好。

我不知道是什么原因造成的。但是,幸运的是使用BindEvent我们可以解决这个问题。它运作良好。

这是一步:

  • 在表单中创建2(2)方法,例如myBindEvent和myKeypress
  • 在重构网格源代码的每一行代码之后(This.RecordSource =" ..."),请输入以下代码行:THISFORM.myBindEvent
  • myBindEvent中的例程:

    LOCAL lnColumn,xz,loRef
    lnColumn = THISFORM.Grid1.COLUMNCOUNT
    FOR xz = 1到lnColumn
    loRef = EVALUATE(" THISFORM.Grid1.Column" + ALLTRIM(STR((xz))+" .Text1")
    BINDEVENT(loRef," KeyPress",THISFORM," myKeyPress")
    ENDFOR

  • 方法myKeyPress中的例程

    LPARAMETERS nKeyCode,nShiftAltCtrl

    DO CASE
    CASE THISFORM.Grid1.ACTIVECOLUMN = 1
    如果nKeyCode = 13
        MESSAGEBOX("你在Column1.Text1和#34按ENTER键) ENDIF

    CASE THISFORM.Grid1.ACTIVECOLUMN = 2
    如果nKeyCode = 13
        MESSAGEBOX("你在Column2.Text1和#34按ENTER) ENDIF

    CASE THISFORM.Grid1.ACTIVECOLUMN = 3
    如果nKeyCode = 13
        MESSAGEBOX("你在Column3.Text1和#34按ENTER键) ENDIF

    ,否则
    如果nKeyCode = 13
        MESSAGEBOX("为什么按键事件不再适用于Grid的文本框?")
    ENDIF

    ENDCASE

希望这有帮助。

ps:几个月前我从互联网上获得了BindEvent方法。但是我忘记了最初编写该代码的地点和原因。如果您找到了原始来源,则可以归功于他/她。

此致

Kusni

相关问题