将窗体的keypreview设为true
key:=#0; 
这样做了,但是backspace 这个键,还是无法禁止?

解决方案 »

  1.   

    if key=#8 then
     key=#0
      

  2.   

    Virtual Key Codes
    Symbolic
    constant name Value
    (hexadecimal) Keyboard (or mouse) equivalent
    VK_LBUTTON 01 Left mouse button
    VK_RBUTTON 02 Right mouse button
    VK_CANCEL 03 Control-break processing
    VK_MBUTTON 04 Middle mouse button (three-button mouse)
    VK_BACK 08 BACKSPACE key
    VK_TAB 09 TAB key
    VK_CLEAR 0C CLEAR key
    VK_RETURN 0D ENTER key
    VK_SHIFT 10 SHIFT key
    VK_CONTROL 11 CTRL key
    VK_MENU 12 ALT key
    VK_PAUSE 13 PAUSE key
    VK_CAPITAL 14 CAPS LOCK key
    VK_ESCAPE 1B ESC key
    VK_SPACE 20 SPACEBAR
    VK_PRIOR 21 PAGE UP key
    VK_NEXT 22 PAGE DOWN key
    VK_END 23 END key
    VK_HOME 24 HOME key
    VK_LEFT 25 LEFT ARROW key
    VK_UP 26 UP ARROW key
    VK_RIGHT 27 RIGHT ARROW key
    VK_DOWN 28 DOWN ARROW key
    VK_SELECT 29 SELECT key
    VK_PRINT 2A PRINT key
    VK_EXECUTE 2B EXECUTE key
    VK_SNAPSHOT 2C PRINT SCREEN key
    VK_INSERT 2D INS key
    VK_DELETE 2E DEL key
    VK_HELP 2F HELP key
    30 0 key
    31 1 key
    32 2 key
    33 3 key
    34 4 key
    35 5 key
    36 6 key
    37 7 key
    38 8 key
    39 9 key
    41 A key
    42 B key
    43 C key
    44 D key
    45 E key
    46 F key
    47 G key
    48 H key
    49 I key
    4A J key
    4B K key
    4C L key
    4D M key
    4E N key
    4F O key
    50 P key
    51 Q key
    52 R key
    53 S key
    54 T key
    55 U key
    56 V key
    57 W key
    58 X key
    59 Y key
    5A Z key
    VK_NUMPAD0 60 Numeric keypad 0 key
    VK_NUMPAD1 61 Numeric keypad 1 key
    VK_NUMPAD2 62 Numeric keypad 2 key
    VK_NUMPAD3 63 Numeric keypad 3 key
    VK_NUMPAD4 64 Numeric keypad 4 key
    VK_NUMPAD5 65 Numeric keypad 5 key
    VK_NUMPAD6 66 Numeric keypad 6 key
    VK_NUMPAD7 67 Numeric keypad 7 key
    VK_NUMPAD8 68 Numeric keypad 8 key
    VK_NUMPAD9 69 Numeric keypad 9 key
    VK_SEPARATOR 6C Separator key
    VK_SUBTRACT 6D Subtract key
    VK_DECIMAL 6E Decimal key
    VK_DIVIDE 6F Divide key
    VK_F1 70 F1 key
    VK_F2 71 F2 key
    VK_F3 72 F3 key
    VK_F4 73 F4 key
    VK_F5 74 F5 key
    VK_F6 75 F6 key
    VK_F7 76 F7 key
    VK_F8 77 F8 key
    VK_F9 78 F9 key
    VK_F10 79 F10 key
    VK_F11 7A F11 key
    VK_F12 7B F12 key
    VK_F13 7C F13 key
    VK_F14 7D F14 key
    VK_F15 7E F15 key
    VK_F16 7F F16 key
    VK_F17 80H F17 key
    VK_F18 81H F18 key
    VK_F19 82H F19 key
    VK_F20 83H F20 key
    VK_F21 84H F21 key
    VK_F22 85H F22 key
    VK_F23 86H F23 key
    VK_F24 87H F24 key
    VK_NUMLOCK 90 NUM LOCK key
    VK_SCROLL 91 SCROLL LOCK key
    VK_LSHIFT A0 Left SHIFT key
    VK_RSHIFT A1 Right SHIFT key
    VK_LCONTROL A2 Left CONTROL key
    VK_RCONTROL A3 Right CONTROL key
    VK_LMENU A4 Left MENU key
    VK_RMENU A5 Right MENU key
    VK_PLAY FA Play key
    VK_ZOOM FB Zoom key
      

  3.   


    我就是这么写的,但是不管用procedure TFrm_Shift.DBTime_BeginKeyPress(Sender: TObject; var Key: Char);
    begin
          if key=#8 then
            key:=#0;
    end;或者procedure TFrm_Shift.DBTime_BeginKeyPress(Sender: TObject; var Key: Char);
    begin
            key:=#0;
    end;都不管用
      

  4.   


    我就是这么写的procedure TFrm_Shift.DBTime_BeginKeyPress(Sender: TObject; var Key: Char);
    begin
          if key=#8 then
            key:=#0;
    end;或者procedure TFrm_Shift.DBTime_BeginKeyPress(Sender: TObject; var Key: Char);
    begin
            key:=#0;
    end;都不管用
      

  5.   

    附:Delete键好像无法屏蔽。   其他的键倒可以屏蔽procedure TFrm_Appoint.CBox_DeptKeyPress(Sender: TObject; var Key: Char);
    begin
      inherited;
      key:=#0;
    end;
      

  6.   

    procedure   TForm1.Edit1KeyDown(Sender:   TObject;   var   Key:   Word; 
        Shift:   TShiftState); 
    begin 
        if   Key   =   46   then   Key   :=   0;   <---46表示是Delete键 
    end; 现在我用这个事件,可以禁止了,但是达到这样的效果,需要2个事件才行。   一个事件可以吗?
      

  7.   

    这位 kaikai_kk  仁兄已回答了呀
      

  8.   


    可以禁止所有键盘输入,但是达到这样的效果,需要2个事件才行。 一个事件可以吗?procedure TFrm_Appoint.CBox_DeptKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      inherited;
      key := 0;
    if   Key = 46  then   Key := 0
    end;procedure TFrm_Appoint.CBox_DeptKeyPress(Sender: TObject; var Key: Char);
    begin
      inherited;
      key:=#0;
    end;
      

  9.   

    没问题呀。我用的是 Delphi 2012procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      Label1.Caption := IntToStr(Integer(Key));
      if Key = #8 then
        Key := #0;
    end;