BCB key事件中判断Shift、Alt、Ctrl状态:

类似此事件中

void __fastcall TForm1::keydown(TObject *Sender, WORD &Key,TShiftState Shift)
{
if(Key==VK_DELETE)
{
((TcxTextEdit*)Sender)->Top=-111;
((TcxTextEdit*)Sender)->Left=-111;
}
if(Key==VK_LEFT&&Shift.Contains(ssCtrl))
{
int left=((TcxTextEdit*)Sender)->Left-5;
if(left<0)left=0;
((TcxTextEdit*)Sender)->Left=left;
}
}
Shift是一个TShiftState集合,集合中元素值及含义参见下表
元素值及其含义:
ssShift:"Shift"键被按下;
ssAlt:"Alt"键被按下;
ssCtrl:"Ctrl"键被按下;
ssLeft:鼠标左键被按下;
ssRight:鼠标右键被按下;
ssMiddle:鼠标中键被按下;
ssDouble:左右鼠标同时被按下。
查看某一个元素是否在集合中,使用方法Contains()。
bool __fastcall Contains(const T) const;
如果集合中包含有元素T,则返回true,否则返回false。

一:字母和数字按键的建码值 

收藏一下键盘虚拟键值

Backspace->8      Tab->9  Return->13          Pause->19          CapsLock->20             Esc->27                Space->32            PageUp->33           PageDown->34

End->35     Home->36     LeftArrow->37      UpArrow->38         RightArrow->39      DownArrow->40         PrintScrn->44       Insert->45              Delete->46

0->48         1->49               2->50              3->51               4->52                 5->53               6->54            7->55             8->56                 9->57

A->65    B->66          C->67            D->68             E->69            F->70            G->71         H->72           I->73            J->74         K->75          L->76               M->77

N->78   O->79          P->80            Q->81             R->82            S->83            T->84          U->85           V->86          W->87        X->88          y->89                Z->90

LWin->91                     RWin->92                  PopMenu->93

NumPad0->96  NumPad1->97  NumPad2->98   NumPad3->99   NumPad4->100   NumPad5->101   NumPad6->102   NumPad7->103   NumPad8->104  NumPad9->105
NumPad*->106             NumPad+->107          NumPad-->109              NumPad.->110                  NumPad/->111

F1->112       F2->113        F3->114      F4->115      F5->116      F6->117      F7->118      F8->119

F9->120      F10->121      F11->122      F12->123      F13->124      F14->125      F15->126      F16->127

F17->128      F18->129      F19->130      F20->131      F21->132      F22->133      F23->134      F24->135

NumLock->144            ScrollLock->145

;->186          ,->188          .->190              /->191                `->192              [->219              \->220                     ]->221                       '->222

原文:https://blog.csdn.net/beslow/article/details/9492025

https://blog.csdn.net/u011981242/article/details/52332172/

https://jingyan.baidu.com/article/fedf073780e16335ac8977a4.html

BCB key事件中判断Shift、Alt、Ctrl状态的更多相关文章

  1. C#-判断Shift,Alt,Ctrl是否被按下,确定所按下的组合键

    在创建接受用户击键的应用程序时,您还可能希望监视 SHIFT.ALT 和 CTRL 键等组合键.当一个组合键与其他键同时按下,或在单击鼠标的同时按下时,您的应用程序能够做出适当响应:字母 S 可能仅导 ...

  2. KeyDown/PreviewKeyDown事件中监听Alt键按下

    一个坑 在WPF应用程序(或者其他Windows应用程序中),为了监听Alt键按下,我们可以尝试写出这样的代码: PreviewKeyDown += (s, e) => { if (e.Key ...

  3. asp.net 在AcquireRequestState事件中判断登陆验证。

    Global中添加AcquireRequestState事件. protected void Application_AcquireRequestState(object sender, EventA ...

  4. 在cc.EventListener.TOUCH_ONE_BY_ONE事件中判断拖动物离哪边近飞向那边

    需将拖动物坐标和要飞向物坐标转化为整个layer的坐标,因为人们判断远近是根据整个layer来看的.

  5. .NET winform 的keypress事件中判断当用户按下的是哪个键

    keys是按键的枚举类型 private void txtPropertyValue_KeyPress(object sender, KeyPressEventArgs e) { if ((Keys) ...

  6. C#程序中判断DEBUG和RELEASE状态

    编辑 删除 习惯了用老方式(注释的方式)来对程序进行调试,不过昨天才发现这样调试存在很大的隐患:在工程发布的时候如果忘记把该注释的代码注释掉,而让这些调试信息随工程一起发布,如果是可见的调试信息倒好发 ...

  7. 【转】C#中判断扫描枪输入与键盘输入

    提出问题:在收货系统中,常常要用到扫描枪扫描条码输入到TextBox,当条码无法扫描时,需要手工输入.如果是扫描枪输入时,我们将自动去判读条码,而手工输入时,最终需要加按回车键确认后判读条码.这时候我 ...

  8. WinForm中TextBox 中判断扫描枪输入与键盘输入

    本文转载:http://www.cnblogs.com/Hdsome/archive/2011/10/28/2227712.html 提出问题:在收货系统中,常常要用到扫描枪扫描条码输入到TextBo ...

  9. 在拖放文件的同时检测shift键的状态

    老板要给原来文件拖放的功能加个扩展分类,于是想在文件拖放时判断shift键的状态来区分. 一般通过keydown和keyup来判断按下与否,但这都是需要控件事件触发,而在拖放的时候是没法触发key事件 ...

随机推荐

  1. 面试题:在一个文件中有 10G 个整数,乱序排列,要求找出中位数(内存限制为2G)

    假设整数为32bit,4个字节存储 这种题目,首先想到的是分而治之.将文件中数字分组.然后遍历文件中的数字,按分组进行计数.最后找到中位数所在的分组区间 1.如果10G个整数都为同一个,那么10G整数 ...

  2. vue中$router与$route的区别

    $.router是VueRouter的实例,相当于一个全局的路由器对象.包含很多属性和子对象,例如history对象 $.route表示当前正在跳转的路由对象.可以通过$.route获取到name,p ...

  3. ArcGIS Server SOE地图服务重启特别卡

    ArcGIS Server 服务器端扩展,SOE代码调试时,需要经常重新编译.替换地图服务中的扩展, 由于未知问题,本地开发环境包含SOE的地图服务,每次重启都需要耗费相当长的时间,大体上20多分钟, ...

  4. 创建Core项目使用IdentityServer4

    本文主要参照https://www.bilibili.com/video/av42364337/?p=4 英文帮助文档:https://identityserver4.readthedocs.io/e ...

  5. 常用的MySQL命令

    1.新建数据库: create database person; 2.使用数据库 use person: 3.创建一个表格 create table student ( id int(10) not ...

  6. adb server is out of date. killing... ADB server didn't ACK * failed to start daemon *……

    问题 使用 adb 命令的时候报错如下: adb server is out of date. killing... ADB server didn't ACK * failed to start d ...

  7. Vue2.0的核心思想

    Vue的核心思想为数据驱动和组件化. 一.数据驱动——双向绑定 Vue是一种MVVM框架.而DOM是数据的一个种自然映射.传统的模式是通过Ajax请求从model请求数据,然后手动的触发DOM传入数据 ...

  8. tkinter 按钮响应函数传值

    tkinter 中的Button组件的响应函数如何传入参数,可能非常困扰新手,这里记录一下. 步骤: 1. 写好响应函数(形参设置好) 2. 在Button command 设置形式:command ...

  9. (比赛)C - 小Q系列故事——最佳裁判(水题)

    C - 小Q系列故事——最佳裁判 Time Limit:200MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Des ...

  10. 工业网络安全 智能电网,SCADA和其他工业控制系统等关键基础设施的网络安全(总结)

    1.工业网络的安全势必是未来安全方向必须要做的一个重要的方面 工业网络的概念:简单的说就是控制控制系统的网络,其可以进行基于网络的数字通信. 关键的基础设施:包括直接操作任何系统的设施 了解工业网络的 ...