在StringGrid,有时我得到下面当我用鼠标右键单击菜单无用。 这是一个Windows弹出?
如何防止我这个弹出出现,而不是我自己?
我有goAlwaysShowEditor在我的选项。
我已StringGrid.PopupMenu我的弹出窗口。
我已经设置StringGrid.OnMouseDown显示我的弹出,如果这是一个正确的点击。
在StringGrid,有时我得到下面当我用鼠标右键单击菜单无用。 这是一个Windows弹出?
如何防止我这个弹出出现,而不是我自己?
我有goAlwaysShowEditor在我的选项。
我已StringGrid.PopupMenu我的弹出窗口。
我已经设置StringGrid.OnMouseDown显示我的弹出,如果这是一个正确的点击。
您可以覆盖虚拟CreateEditor
像这样(没有很好的解决方法,虽然,我知道:-):
type
TStringGrid = class(Grids.TStringGrid)
protected
function CreateEditor: TInplaceEdit; override;
end;
implementation
function TStringGrid.CreateEditor: TInplaceEdit;
begin
Result := inherited CreateEditor;
TMaskEdit(Result).PopupMenu := Form1.PopupMenu1;
end;
这是每一个Windows编辑控件中发现的弹出式菜单。 可能是世界上最知名的菜单(唯一的竞争来自系统菜单)。 你想要它,因为你的用户的期望它(和需要它)。 当您在单元格中编辑文本时, TStringGrid
控制实际上创建了一个标准的Windows编辑控制,这是伟大的。 这样的话你得到它的弹出式菜单。
此外,为了显示自己的弹出菜单(当您不编辑单元格),你并不需要设置OnMouseDown
处理程序。 这足以设置PopupMenu
属性。 事实上,这是非常不好的使用OnMouseDown
处理程序,以触发弹出菜单,因为那时菜单才会显示在用户右键点击控件(而不是,例如,当他压在“背景”按钮他的键盘)。
如果你真的想你自己的弹出式菜单显示,即使用户正在编辑一个单元格,你真的给他他一贯的选择撤销,复制,剪切,粘贴,Unicode的东西,等等,手动。 你肯定不希望这样?