我已编写代码将自定义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
但不知何故显示的菜单是默认的上下文菜单,而不是我的自定义菜单。我该如何关闭默认上下文菜单并使用自定义菜单?
答案 0 :(得分:0)
让DBGrid显示弹出菜单的关键因素是您将DBGrids PopupMenu
属性设置为弹出菜单。看起来你已经基于
object myGrid: TDBGrid
..................
PopupMenu = myPopUp
..................
end
虽然没有正确缩进。由于它仍然没有为您弹出,请验证是否已正确设置。请看下面的示例,如何根据TDBGrid对象缩进赋值。
这似乎是您的错误(假设actionFillDownExecute
是OnExecute
的{{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
菜单图片: