TDBGrid显示默认的上下文弹出菜单而不是自定义菜单

时间:2015-11-17 11:03:02

标签: delphi delphi-7

我已编写代码将自定义PopUpMenu分配给DBGrid组件。这些更改已在dfm文件中完成:

object myGrid: TDBGrid
..................
PopupMenu = myPopUp
..................
end

object myPopUp: TPopupMenu
    Left = 528
    Top = 176
    object mnuFillDown: TMenuItem
      Action = actionFillDown
    end 
  end

object actionFillDown: TAction
  Caption = 'Fill Down'
  ShortCut = 16453
  OnExecute = actionFillDownExecute
end

但不知何故显示的菜单是默认的上下文菜单,而不是我的自定义菜单。我该如何关闭默认上下文菜单并使用自定义菜单?

1 个答案:

答案 0 :(得分:0)

让DBGrid显示弹出菜单的关键因素是您将DBGrids PopupMenu属性设置为弹出菜单。看起来你已经基于

完成了这个
object myGrid: TDBGrid
..................
PopupMenu = myPopUp
..................
end

虽然没有正确缩进。由于它仍然没有为您弹出,请验证是否已正确设置。请看下面的示例,如何根据TDBGrid对象缩进赋值。

这似乎是您的错误(假设actionFillDownExecuteOnExecute的{​​{1}}事件处理程序):

TAction actionFillDown

您无法将事件处理程序分配给object myPopUp: TPopupMenu Left = 528 Top = 176 object mnuFillDown: TMenuItem Action = actionFillDownExecute end end 属性,该属性需要TMenuItem.Action(或后代)。以上不编译!

相反,您应该将TAction TAction分配给菜单项actionFillDown属性,并将Action过程分配给OnExecute操作事件。

这是测试项目的.dfm:

actionFillDownExecute

菜单图片:

enter image description here