我在使用 TStringGrid 和弹出菜单时遇到问题
我想知道从弹出菜单中选择一个项目时上次处于事件状态的单元格的行/列。但是,当我单击弹出菜单时,StringGrid.Row 返回为 -1。
我试过使用 MouseToCell 作为 OnClick 的一部分,但即使在设置 SG.Row 之后它仍然在弹出菜单例程中返回 -1 ......我怀疑问题是网格失去了焦点。
是否有任何解决方案不需要 OnClick 设置全局变量?
我正在使用链接到弹出菜单上的项目的操作列表,以确保工具栏和弹出菜单之间的操作一致
最佳答案
恐怕我没有完全理解你的意思。当我左键单击字符串网格中的一个单元格时,它会被选中,但当我右键单击它时不会。当我右键单击它时,会显示弹出菜单(如果已分配),并且在 MenuItemClick
上我可以轻松阅读 row
和 col
当前选中。见 example video .
我猜你真的想要这个:你想要右键单击来更改事件单元格以及左键单击。这很容易做到:
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;
关于Delphi:StringGrid、位置和上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3522971/