Delphi:StringGrid,位置和上下文菜单

Dan*_*lly 2 delphi popupmenu delphi-2010 tstringgrid

我在使用TStringGrid和Popup菜单时遇到问题

我想知道从弹出菜单中选择项目时最后一个活动单元格的行/列.但是,当我单击弹出菜单时,StringGrid.Row返回-1.

我尝试使用MouseToCell作为OnClick的一部分,但即使在设置SG.Row之后它仍然在PopUp菜单例程中返回为-1 ...我怀疑问题是网格失去焦点.

是否有任何解决方案不需要OnClick设置全局变量?

我正在使用链接到弹出菜单上的项目的动作列表,以确保工具栏和弹出菜单之间的操作是一致的

And*_*and 7

我担心我不完全明白你的意思.当我左键单击字符串网格中的单元格时,它会被选中,但是当我右键单击它时则不会.当我右击它,在弹出菜单中显示(如果指定),以及MenuItemClick我可以轻松地阅读rowcol当前选择.查看示例视频.

你真的想要这个:你想要右键点击来改变活动单元格以及左键单击.这很容易做到:

procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbRight then
    StringGrid1.Perform(WM_LBUTTONDOWN, 0, MakeLParam(Word(X), Word(Y)));
end;
Run Code Online (Sandbox Code Playgroud)

  • 我不认为你真的要检查按钮是否被交换.交换按钮时,按左按钮会生成右键消息,反之亦然.当交换按钮并按下左键时,"Button"参数实际上已经是"mbRight"了. (2认同)