我在TEDIT对象的KEYDOWN 事件中写了一下语句:
Key:=0;
我的用意是屏蔽刚输入的字符。但奇怪的是程序运行时却不能屏蔽(该语句已执行)
请问这是为什么?是否根某项设置有关?(我以前写程序时用此法都是可以实现屏蔽的)
谢谢!

解决方案 »

  1.   

    你在edit 中的keypress中加入:
    if(key=xx)then key:=0;
      

  2.   

    在OnKeyPress或者OnKeyUp事件中设置Key:=0。
      

  3.   

    在keydown里写屏蔽事件是不管用的,通常都是在是KeyPress事件中写:
    if not(Key in ['0'..'9',#8]) then Key := #0;
      

  4.   

    一般在是KeyPress事件中写,如:
    if not(Key in ['0'..'9',#8]) then beginend;
      

  5.   

    在KeyPress中
    Key:=0;
    可以屏蔽
      

  6.   

    各位大虾,我的程序中TEdit对象需要支持快捷键,如:CTRL+C,CTRL+V等
    但在KEYPRESS中无法捕捉到ctrl键,如果直接用:if not (Key in ['0'..'9']) then
    则无法支持快捷键了,请问有什么好的解决办法?
    谢谢!
      

  7.   

    可以捕获Ctrl 阿
    uses Qt;
    Key_Control
      

  8.   

    procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
        if (ssCtrl in shift) and (key = Key_C) then
        showmessage('复制');
    end;
    -------------------------------------------------
    应该这样
      

  9.   

    KEYPRESSCTRL+C  #3
    CTRL+V  #22
      

  10.   

    KEYPRESSCTRL+C  #3
    CTRL+V  #22
      

  11.   

    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;
      

  12.   

    请问:CTRL+C  #3  ,CTRL+V  #22  是在哪里定义的,
    我在KEYPRESS事件的帮助中看到组合键是在KEYDOWN,KEYUP中处理的,
    我刚才试过了,在KEYPRESS中:IF Key = #3 then  showmessage('CTRL+C');的确可以捕捉到CTRL+C,
    请大家多多指教!
    谢谢!
      

  13.   

    对于可打印字符在KeyPress中屏蔽,对于系统控制字符在KeyDown中屏蔽
      

  14.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not (key in ['0'..'9',#8]) then
      begin
        key:=#0;
      end;
    end;以上会屏蔽所有快捷键,请问大家什么方法可以将快捷键放行,即在屏蔽非数字键的时候仍可以支持快捷键,如:ctrl+c
      

  15.   

    请问在keydown中如何实现屏蔽?
    我在keydown中用key:=0; 但未能实现屏蔽
    谢谢!