void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) 
 if (((Key>'9')||(Key<'0'))&& (!(Key==8))) Key=0;

解决方案 »

  1.   

    把||变成or, &&变成and 就行了!
    有问题请发信息到我的E-mail:[email protected]
      

  2.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
        if ((key >#57) or (key<#48)) and (key=#56)then
           key:=#0
    end;
      

  3.   

    改了,但是提示incompatible types。他的key 是word 型的。
      

  4.   

    你是在什么事件下写的key控制程序?
      

  5.   

    yutaocool(酷鱼)的程序在keypreess事件中是正确的
      

  6.   

    begin
        if ((key >57) or (key<48)) and (key=#56)then  --改成这样
           key:=0
    end;
      

  7.   

    同意yutaocool(酷鱼)的意见,他是个高手,多给他几分。
      

  8.   

    你应该是在keydown事件中写的吧
      

  9.   

    if (((Key>'9')||(Key<'0'))&& (!(Key==8))) Key=0;
    应该是
    if ((key>'9') or (key<'0')) and (key<>#8) then key=#0;
    表示输入只接受数字或者BackSpace键
      

  10.   

    刚才在keydown事件中写的,但是它的key是word型的,现在我在keypress里重写,如果去掉#,就提示incompatible types,如果加上#才对。我想再问问#0对应的是多少。在我原来的那段代码中key==8表示什么意思。
      

  11.   

    Key==8,是C的基本语法,呵呵,就是绝对等于
    前面加了个!,就是说Key的值不等于8时
      

  12.   

    多说点吧,不会没学过C吧...
    没有关系,最好学Delphi时先找本Pascal的书补一下基础吧,不然对以后不好C里=是做为赋值运算符,而==是做为判断表达式的运算符
    一个表达表a==b的值将会是0或是非0,在C里也就是假和真的意思..(逻辑值)
      

  13.   

    if not (Key in ['0'..'9', char(VK_BACK)]) then Key := #0;
    注:VK_BACK就是键盘的BACK键的虚拟键值,也就是8