吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 693|回复: 5
收起左侧

[求助] Delphi判断Ctrl+号这个判断咋表达?

[复制链接]
冥界3大法王 发表于 2023-2-23 12:42
本帖最后由 冥界3大法王 于 2023-2-23 12:43 编辑

修改下面的代码,热键改成Ctrl+加号
[Delphi] 纯文本查看 复制代码
procedure TForm4.RichViewEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if (ssCtrl in Shift) and (Char(Key) in ['K', 'k']) then
  begin
//    ShowMessage('Ctrl K');
    RichViewEdit1.DocumentPixelsPerInch := RichViewEdit1.DocumentPixelsPerInch + 48;
    RichViewEdit1.Reformat;
    RichViewEdit1.SetFocus;
  end;
end;


设想的热键是这个样子的:
Ctrl+放大文档
Ctrl-缩小文档

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

DEATHTOUCH 发表于 2023-2-23 13:13
[Delphi] 纯文本查看 复制代码
  if ssCtrl in Shift then
  begin
    if Key=189 then
      ShowMessage('Ctrl -')
    else if Key=187 then
      ShowMessage('Ctrl =');
  end; 

应该是这样的
[Delphi] 纯文本查看 复制代码
     VK_OEM_PLUS = 187;
     VK_OEM_MINUS = 189;   

Windows单元有这个定义。

免费评分

参与人数 1吾爱币 +4 热心值 +1 收起 理由
冥界3大法王 + 4 + 1 谢谢@Thanks!

查看全部评分

 楼主| 冥界3大法王 发表于 2023-2-23 13:50
本帖最后由 冥界3大法王 于 2023-2-23 14:04 编辑

@DEATHTOUCH
那为什么if (GetAsyncKeyState(VK_CONTROL) < 0) and (GetAsyncKeyState(Ord('=')) < 0) then
或 if (ssCtrl in Shift) and (Char(Key) in ['=', '=']) then不行呢? 是方法有问题,还是表达方式有问题?
虽然以前搞成功过,总感觉自己糊里八都的

还差一个Ctrl + 鼠标上下滚轮的
https://stackoverflow.com/questions/5297234/tlistview-and-mouse-wheel-scrolling
这个有用?

168qn 发表于 2023-2-23 14:39
DEATHTOUCH 发表于 2023-2-23 16:14
本帖最后由 DEATHTOUCH 于 2023-2-23 16:16 编辑
冥界3大法王 发表于 2023-2-23 13:50
@DEATHTOUCH
那为什么if (GetAsyncKeyState(VK_CONTROL) < 0) and (GetAsyncKeyState(Ord('=')) < 0) then ...

因为这个函数的Key是根据Windows单元定义的VK_XXX系列常量来的,而不是简单的ASCII符号,所以不能用类似Char(Key) = '=' 这样的形式,对于字母来说恰好A-Z这些就对应了ASCII的65-90,但是像是等号(加号),减号(下划线),逗号(左尖括号)等就不是了,不过一般都是按照美式键盘的标准定义,比如等号是187,当然大部分时候建议用VK_XXX常量来。

对于鼠标滚轮加Ctrl的,用
[Delphi] 纯文本查看 复制代码
procedure TForm1.XXXMouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);

就行了,Shift和键盘的一样,WheelDelta表示鼠标滚了多少,取决于系统设置的鼠标滚轮速度,一般根据这个就可以确定缩放了。

免费评分

参与人数 1热心值 +1 收起 理由
冥界3大法王 + 1 谢谢@太感谢了!!!!!!!!!

查看全部评分

 楼主| 冥界3大法王 发表于 2023-2-23 17:13
@DEATHTOUCH
学得真好,心服口服!外加佩服。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 01:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表