我想在edit控件里面实现只能输数字,我在change()和keydown()事件里编程,可是在keydown()里数字0-9的vk直是什么?

解决方案 »

  1.   

    你在keydown事件加入以下代码:
    if not(key in [48..57]) then
      key := 0;
    或者在keypress事件加入以下代码:
    if not (key in ['0'..'9']) then
      key := #0;
      

  2.   


    在edit的keypress事件中
    加入if not (key in ['0'..'9',#8],'.') then
      key:=#0;
      

  3.   

    写错了是
     if not (key in ['0'..'9',#8,'.']) then
    #8是Del键;
    '.'小数点,只输整数可以不要。
      

  4.   

    把form 的keypreview属性设为true
    procedure form1.DBEdit27KeyPress(Sender: TObject; var Key: Char);
    beginif Not (Key  in ['0'..'9',#8,#13,#46] ) then
      Key := #0;
    end;
      

  5.   

    在edit的keypress事件中if not (key in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
          #8,'.') then
      key:=#0;
      

  6.   

    0 ->VK_0
    1->VK_1
    .........
    .........
    ........
    9->VK_9对于小键盘上的
    0->VK_NUMPAD0
    1->VK_NUMPAD1
    ...............    
    ..............
    9->VK_NUMPAD9
      

  7.   

    if (Ord(Key)=8) or (Ord(Key)=46) then
        Exit
      else if (Ord(Key)<48) or ((Ord(Key)>57)) then
        Key:=#0;
    调试通过,可以复用。
      

  8.   

    form 的keypreview属性设为true
    在edit的keypress事件中
    if not (key in ['0'..'9',#8]) then
      key:=#0;
      

  9.   

    为什么当初我问这样的问题就没人回答哪,唉!
    ------------------------------------------------
    Delphi 键盘码表 
     
    资料来源:Delphi Windows 单元文件 表格整理:http://www.netgocn.com 
     
    VK_LBUTTON = 1;
    VK_RBUTTON = 2;
    VK_CANCEL = 3;
    VK_MBUTTON = 4; { NOT contiguous with L & RBUTTON }
    VK_BACK = 8;
    VK_TAB = 9;
    VK_CLEAR = 12;
    VK_RETURN = 13;
    VK_SHIFT = $10;
    VK_CONTROL = 17;
    VK_MENU = 18;
    VK_PAUSE = 19;
    VK_CAPITAL = 20;
    VK_KANA = 21;
    VK_HANGUL = 21;
    VK_JUNJA = 23;
    VK_FINAL = 24;
    VK_HANJA = 25;
    VK_KANJI = 25;
    VK_CONVERT = 28;
    VK_NONCONVERT = 29;
    VK_ACCEPT = 30;
    VK_MODECHANGE = 31;
    VK_ESCAPE = 27;
    VK_SPACE = $20;
    VK_PRIOR = 33;
    VK_NEXT = 34;
    VK_END = 35;
    VK_HOME = 36;
    VK_LEFT = 37;
    VK_UP = 38;
    VK_RIGHT = 39;
    VK_DOWN = 40;
    VK_SELECT = 41;
    VK_PRINT = 42;
    VK_EXECUTE = 43;
    VK_SNAPSHOT = 44;
    VK_INSERT = 45;
    VK_DELETE = 46;
    VK_HELP = 47;
    { VK_0 thru VK_9 are the same as ASCII '0' thru '9' ($30 - $39) }
    { VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' ($41 - $5A) }
    VK_LWIN = 91;
    VK_RWIN = 92;
    VK_APPS = 93;
    VK_NUMPAD0 = 96;
    VK_NUMPAD1 = 97;
    VK_NUMPAD2 = 98;
    VK_NUMPAD3 = 99;
    VK_NUMPAD4 = 100;
    VK_NUMPAD5 = 101;
    VK_NUMPAD6 = 102;
    VK_NUMPAD7 = 103;
    VK_NUMPAD8 = 104; VK_NUMPAD9 = 105;
    VK_MULTIPLY = 106;
    VK_ADD = 107;
    VK_SEPARATOR = 108;
    VK_SUBTRACT = 109;
    VK_DECIMAL = 110;
    VK_DIVIDE = 111;
    VK_F1 = 112;
    VK_F2 = 113;
    VK_F3 = 114;
    VK_F4 = 115;
    VK_F5 = 116;
    VK_F6 = 117;
    VK_F7 = 118;
    VK_F8 = 119;
    VK_F9 = 120;
    VK_F10 = 121;
    VK_F11 = 122;
    VK_F12 = 123;
    VK_F13 = 124;
    VK_F14 = 125;
    VK_F15 = 126;
    VK_F16 = 127;
    VK_F17 = 128;
    VK_F18 = 129;
    VK_F19 = 130;
    VK_F20 = 131;
    VK_F21 = 132;
    VK_F22 = 133;
    VK_F23 = 134;
    VK_F24 = 135;
    VK_NUMLOCK = 144;
    VK_SCROLL = 145;
    { VK_L & VK_R - left and right Alt, Ctrl and Shift virtual keys.
    Used only as parameters to GetAsyncKeyState() and GetKeyState().
    No other API or message will distinguish left and right keys in this way. }
    VK_LSHIFT = 160;
    VK_RSHIFT = 161;
    VK_LCONTROL = 162;
    VK_RCONTROL = 163;
    VK_LMENU = 164;
    VK_RMENU = 165;
    VK_PROCESSKEY = 229;
    VK_ATTN = 246;
    VK_CRSEL = 247;
    VK_EXSEL = 248;
    VK_EREOF = 249;
    VK_PLAY = 250;
    VK_ZOOM = 251;
    VK_NONAME = 252;
    VK_PA1 = 253;
    VK_OEM_CLEAR = 254;