一位用户定制了他的鼠标,这样他就可以使用鼠标滚轮或特殊的Logitech按钮双击鼠标。他报告说我的软件只识别标准的左键双击。关于我没有提供什么建议吗?如何修复?
软件是 Delphi Alexandria,VCL,Windows。
TDrawgrid的这个子代通过将OnDblClick设置为Create中的自定义过程来查找双击:
OnDblClick := DoDoubleClick;
procedure DoDoubleClick(Sender: TObject);
procedure TWS_Grid.DoDoubleClick(Sender: TObject);
begin
if fGridState <> gsNormal then
exit;
if Assigned(On_DoubleClickCell) then
begin
On_DoubleClickCell(self, Col, Row);
just_double_clicked := true;
end;
end;
On_DoubleClickcell可以很好地处理普通的左键双击。但是,我自己的由OnMouseDown调用的CheckMouseDown不接受除mbLeft之外的任何其他按钮:
procedure TWS_Grid.CheckMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: integer);
var
ACol, AGridRow: integer;
begin
if (Button <> mbLeft) or (not(fGridState in [gsNormal, gsSelecting])) then
exit;
...
我是否需要以某种方式计算OnMouseDown或OnMouseUp中的点击次数?
谢谢
1条答案
按热度按时间ee7vknir1#
要检查OnMouseDown事件中的双击,应检查上述事件返回的Shift State。
双击时(无论使用哪个按钮执行双击),换档状态将包括
ssDouble
。因此,使用Button和Shift信息的组合来检测所需的双击执行。
或者,您也可以尝试通过处理特定窗口接收的WM_LBUTTONDBLCLK窗口消息来检测双击。