窗口KeyPreview == true,这样就可以在Edit子窗口之前截获到在Edit子窗口的键盘输入了。
然后在OnKeyDown(按下),OnKeyPress(按住不放),OnKeyUp(按键放开)等 事件 里写相应的内容。(可以通过OnKeyDown和OnKeyUp共同计算来决定是否在长时间按下时还继续粘贴相应的内容)
因为你这里要贴东西,所以我想应该选用OnKeyUp来完成。
在这个事件里有以下几个参数:
TObject *Sender, WORD &Key,TShiftState Shift
其中Sender是指发出消息的对象,Key就是你要的'v'键了。
Shift可以包含很多信息它是个集合,即Set,
如果有兴趣可以研究下Set,它是个模板类。
以下是TShiftState的多种状态:
ssShift 'SHIFT'键被按下
ssAlt 'ALT'被按下
ssCtrl Ctrl被按下.
ssLeft 鼠标左键被按下.
ssRight 鼠标右键被按下.
ssMiddle 鼠标中间键被按下.
ssDouble 鼠标是否被双击.
可以通过Shift.Contains(ssShift) == true来判断是否有SHIFT键被按下,同时还可以判断是否有Ctrl被按下。
if(Shift.Contains(ssShift)&&Shift.Contains(ssCtrl)&&UpperCase(Key) == 'V')
可以用来判断是否按下了Shift+Ctrl+V键。
然后在OnKeyDown(按下),OnKeyPress(按住不放),OnKeyUp(按键放开)等 事件 里写相应的内容。(可以通过OnKeyDown和OnKeyUp共同计算来决定是否在长时间按下时还继续粘贴相应的内容)
因为你这里要贴东西,所以我想应该选用OnKeyUp来完成。
在这个事件里有以下几个参数:
TObject *Sender, WORD &Key,TShiftState Shift
其中Sender是指发出消息的对象,Key就是你要的'v'键了。
Shift可以包含很多信息它是个集合,即Set,
如果有兴趣可以研究下Set,它是个模板类。
以下是TShiftState的多种状态:
ssShift 'SHIFT'键被按下
ssAlt 'ALT'被按下
ssCtrl Ctrl被按下.
ssLeft 鼠标左键被按下.
ssRight 鼠标右键被按下.
ssMiddle 鼠标中间键被按下.
ssDouble 鼠标是否被双击.
可以通过Shift.Contains(ssShift) == true来判断是否有SHIFT键被按下,同时还可以判断是否有Ctrl被按下。
if(Shift.Contains(ssShift)&&Shift.Contains(ssCtrl)&&UpperCase(Key) == 'V')
可以用来判断是否按下了Shift+Ctrl+V键。