procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=vk_left then key:=vk_escape; end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=vk_left then key:=word(#0); end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=vk_left then key:=#0;{这样试试} end;
to : cg1120(代码最优化-§新年祝福你,好运伴着你§): 老兄,#0是字符,而onkeydown中的key是word型阿。#0是用在onkeyPress时间中吧,onKeyPress又不能得到左箭头这样的键值。
key :=0;会不行? 刚试了好像没这个情况~呵呵keydown里可以用#0 ? 呵呵 纳闷中~
刚试了, goomoo(古木) 兄的对了,不过我按backspace键的时候,还是删除了前面的字符。下面的方法: if key=VK_BACK then key:=vk_escape; if key=VK_BACK then key:=word(#0); 都不行,怎么回事?
哦,我发现只有backspace键不行,是不是这个键只能在onKeyPress中来处理了?
楼主说的对!在press里加入 ... if Not ((Key in ['0'..'9']) or (key in ['A'..'z'])) then key:=#0; .... 结合在down中的做法就可以了。不过可以先看看keypress 和keydown的区别 不过很奇怪你那边为什么key:=0 不可以~~
Shift: TShiftState);
begin
if key=vk_left then key:=vk_escape;
end;
Shift: TShiftState);
begin
if key=vk_left then key:=word(#0);
end;
Shift: TShiftState);
begin
if key=vk_left then key:=#0;{这样试试}
end;
刚试了好像没这个情况~呵呵keydown里可以用#0 ? 呵呵 纳闷中~
if key=VK_BACK then key:=vk_escape;
if key=VK_BACK then key:=word(#0);
都不行,怎么回事?
...
if Not ((Key in ['0'..'9']) or (key in ['A'..'z'])) then
key:=#0;
....
结合在down中的做法就可以了。不过可以先看看keypress 和keydown的区别
不过很奇怪你那边为什么key:=0 不可以~~
其它的键盘符号就应该在OnKeyDown或OnkeyUp中处理了。