delphi 中 实现 ctrl + A~Z 和 Alt + A~Z 组合键的拦截
delhpi中PageControl有个页面,页1,页2,中常有相同的快捷键。焦点再页2,的时候,按先快捷键,Alt+...的时候,常常弹出页1的事件中。procedur...
delhpi 中 PageControl 有个页面,页1,页2 ,中常有相同的快捷键。焦点再页2,的时候,按先快捷键,Alt + ...的时候,常常弹出页1的事件中。
procedure Tfrmddzl.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case key of
VK_F2: begin
IF PG.ActivePage=TS1 THEN BEGIN
t1.OnClick(nil);
END;
IF PG.ActivePage=TS2 THEN BEGIN
IF TSB1.Enabled THEN TSB1.OnClick(nil);
END;
end;
end;
end;
用以上虚拟键盘,只能单个键值,拦截,怎样才能可以拦截组合键。谢谢! 展开
procedure Tfrmddzl.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case key of
VK_F2: begin
IF PG.ActivePage=TS1 THEN BEGIN
t1.OnClick(nil);
END;
IF PG.ActivePage=TS2 THEN BEGIN
IF TSB1.Enabled THEN TSB1.OnClick(nil);
END;
end;
end;
end;
用以上虚拟键盘,只能单个键值,拦截,怎样才能可以拦截组合键。谢谢! 展开
4个回答
展开全部
Shift: TShiftState
判断这个shift的取值就可以了
TShiftState = set of (ssShift, ssAlt, ssCtrl,
ssLeft, ssRight, ssMiddle, ssDouble);
if (ssShift in Shift)and(key = vk_F2) then 就是按下了shift+F2
判断这个shift的取值就可以了
TShiftState = set of (ssShift, ssAlt, ssCtrl,
ssLeft, ssRight, ssMiddle, ssDouble);
if (ssShift in Shift)and(key = vk_F2) then 就是按下了shift+F2
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当按下alt或ctrl键的时候 Shift值是不一样的,通过读取Shift的值和Key的值,可以判断组合键
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Shift: TShiftState 看一下帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果想实现Ctrl + L
procedure TForm1.Memo4KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Shift = [ssCtrl]) and (Key = ord('L') ) then begin
SpeedButton44Click(Self);
end;
procedure TForm1.Memo4KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Shift = [ssCtrl]) and (Key = ord('L') ) then begin
SpeedButton44Click(Self);
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询