如题!谢谢大家了

解决方案 »

  1.   

    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if key=vk_left then key:=vk_escape;
    end;
      

  2.   

    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if key=vk_left then key:=word(#0);
    end;
      

  3.   

    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if key=vk_left then key:=#0;{这样试试}
    end;
      

  4.   

    to : cg1120(代码最优化-§新年祝福你,好运伴着你§): 老兄,#0是字符,而onkeydown中的key是word型阿。#0是用在onkeyPress时间中吧,onKeyPress又不能得到左箭头这样的键值。
      

  5.   

    key :=0;会不行?
    刚试了好像没这个情况~呵呵keydown里可以用#0 ? 呵呵  纳闷中~
      

  6.   

    刚试了, goomoo(古木) 兄的对了,不过我按backspace键的时候,还是删除了前面的字符。下面的方法:
    if key=VK_BACK  then key:=vk_escape;
    if key=VK_BACK  then key:=word(#0);
    都不行,怎么回事?
      

  7.   

    哦,我发现只有backspace键不行,是不是这个键只能在onKeyPress中来处理了?
      

  8.   

    楼主说的对!在press里加入
    ...
      if Not ((Key in ['0'..'9']) or (key in ['A'..'z'])) then
      key:=#0;
    ....
    结合在down中的做法就可以了。不过可以先看看keypress 和keydown的区别
    不过很奇怪你那边为什么key:=0 不可以~~
      

  9.   

    应该是 key:=0 而不是 key:=#0 。还要注意 OnKeyDown,OnKeyPress,OnKeyUp 等几个事件。
      

  10.   

    我想应该是在OnkeyPress中只能处理ascii字符,
    其它的键盘符号就应该在OnKeyDown或OnkeyUp中处理了。