【问题标题】:In StringGrid, goEditing prevents the MouseDown event from firing在 StringGrid 中,goEditing 防止触发 MouseDown 事件
【发布时间】:2011-01-08 05:12:06
【问题描述】:

在字符串网格中,我打开了 goEditing,这样用户就不必单击即可进入编辑器。

现在,当他们右键单击时,会得到下面的弹出窗口,而不是调用我的 MouseDown 事件。

有没有办法关闭这种行为?

【问题讨论】:

    标签: delphi


    【解决方案1】:

    goEditing 模式意味着焦点网格单元始终包含一个活动的编辑控件。如果没有 goEditing,编辑控件在用户单击进入编辑模式之前是不可见的。

    在 goEditing 模式下,当您右键单击时,您是在右键单击编辑控件,而不是在网格上。因此产生的弹出菜单是编辑控件的弹出菜单,而不是网格的弹出菜单。

    如果你想用你自己的覆盖/替换编辑控件的默认弹出菜单,你可以通过修改网格使用的编辑控件实例来做到这一点(只有一个编辑控件实例从随着焦点的移动,单元格到单元格)或通过指定您自己的单元格编辑器类型。

    很抱歉,我在这里不能说得更具体了 - 自从我上次研究 Delphi 网格控件的内部结构以来已经有十多年了。

    【讨论】:

    • 谢谢,丹尼!我看到了“dthorpe”的签名,立刻就想起了你的名字,这些年来我在很多地方都看到过,那时你还在参与产品!很高兴看到您还在并回答 Delphi 问题! ——让我对网格的这种操作感到困扰的是它是被调制的。用户通过鼠标右键单击获得不同的结果,这取决于他是否开始输入。这不是不标准吗? (我不是在抱怨,只是想理解!)
    • 是的,字符串网格有点像红头发的继子。大部分开发工作都投入了 TDBGrid。根据您的情况,通过在内存表中设置数据并在其上使用 TDBGrid 而不是使用 TStringGrid,您可能会获得更好的结果。
    • 再次感谢!对于 TDBGrid 的建议
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多