key是WORD的
if (key<$30) and (key>$49) then key:=0;

解决方案 »

  1.   

    呵呵,你在OnKeyPress事件中用不要在OnKeyDown或OnKeyUp事件中用,如下:procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Word;  Shift: TShiftState);
    begin   
      if not (key in ['0'..'9']) then   key:=#0;
    end;
      

  2.   

    在keypress中如下:
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    if not (key in ['0'..'9']) then
    begin
     key:=#0;
     exit
    end;
    end;
      

  3.   

    你在 keypress里写不要在 keydown里,那样会屏幕掉系统键
      

  4.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
         if not(key in['0'..'9']) then   key:=#0;
    end;
      

  5.   

    呵呵,最好这样
    if not (key in ['0'..'9',#8]) then   key:=#0;
    //加个#8才能使用Del键,否则,连Del键也会用不了的!!
      

  6.   

    在keypress里
    if  ((key<'0')or ((key>'9')) and (key<>'_')and(key<>#8')and (key<>#13) then
    begin
    key:=#0;
    end;
      

  7.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    if not (key in ['0'..'9',#8]) then
    begin
     key:=#0;
     exit
    end;
    end;
      

  8.   

    谢谢,谢谢,谢谢大家,我解决了,对了weizhi(行者) ,上次你叫我改注册表,我试过了,可能是我改的时候有问题,安装以后没有修改掉注册表,但我现在换成动态的在程序里写Adoconnection的COnnectionstring,就不要进行DSN信息的注册了,只要安装以后把数据库考到程序目录下就可以使用了,谢谢你的关心,你的建议也给了我很大的启发,谢谢!