在keydown里写屏蔽事件是不管用的,通常都是在是KeyPress事件中写: if not(Key in ['0'..'9',#8]) then Key := #0;
一般在是KeyPress事件中写,如: if not(Key in ['0'..'9',#8]) then beginend;
在KeyPress中 Key:=0; 可以屏蔽
各位大虾,我的程序中TEdit对象需要支持快捷键,如:CTRL+C,CTRL+V等 但在KEYPRESS中无法捕捉到ctrl键,如果直接用:if not (Key in ['0'..'9']) then 则无法支持快捷键了,请问有什么好的解决办法? 谢谢!
可以捕获Ctrl 阿 uses Qt; Key_Control
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (ssCtrl in shift) and (key = Key_C) then showmessage('复制'); end; ------------------------------------------------- 应该这样
KEYPRESSCTRL+C #3 CTRL+V #22
KEYPRESSCTRL+C #3 CTRL+V #22
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9','a'..'z',#8,#3,#22]) then begin key:=#0; MessageBeep(1); end; end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9',#8]) then begin key:=#0; end; end;以上会屏蔽所有快捷键,请问大家什么方法可以将快捷键放行,即在屏蔽非数字键的时候仍可以支持快捷键,如:ctrl+c
if(key=xx)then key:=0;
if not(Key in ['0'..'9',#8]) then Key := #0;
if not(Key in ['0'..'9',#8]) then beginend;
Key:=0;
可以屏蔽
但在KEYPRESS中无法捕捉到ctrl键,如果直接用:if not (Key in ['0'..'9']) then
则无法支持快捷键了,请问有什么好的解决办法?
谢谢!
uses Qt;
Key_Control
Shift: TShiftState);
begin
if (ssCtrl in shift) and (key = Key_C) then
showmessage('复制');
end;
-------------------------------------------------
应该这样
CTRL+V #22
CTRL+V #22
begin
if not (key in ['0'..'9','a'..'z',#8,#3,#22]) then
begin
key:=#0;
MessageBeep(1);
end;
end;
我在KEYPRESS事件的帮助中看到组合键是在KEYDOWN,KEYUP中处理的,
我刚才试过了,在KEYPRESS中:IF Key = #3 then showmessage('CTRL+C');的确可以捕捉到CTRL+C,
请大家多多指教!
谢谢!
begin
if not (key in ['0'..'9',#8]) then
begin
key:=#0;
end;
end;以上会屏蔽所有快捷键,请问大家什么方法可以将快捷键放行,即在屏蔽非数字键的时候仍可以支持快捷键,如:ctrl+c
我在keydown中用key:=0; 但未能实现屏蔽
谢谢!