我想只让edit里面只能输入数字和-,p这几个符号,应该怎么做呢!请帮帮我

解决方案 »

  1.   

    onkeypress事件中限制输入内容
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not (key in ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', 'p']) then
        key:=#0;
    end;
      

  2.   

    呵呵,这样backspace键就不能用了,
      

  3.   

    那backspace键怎么定义呢?还没有其他的方法解决这个问题?
      

  4.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not (key in ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', 'p',Key_Backspace]) then
        key:=#0;
    end;这样能不能解决问题?
      

  5.   

    procedure TForm4.Edit5KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
    showmessage(inttostr(key));
     if not (key in [49,64,8])
     then
      key:=#0;
    end;
    上面key:=#0是错的,因为我不知不反应的代码,showmessage是我测Key代码的
      

  6.   

    用copy函数加到keypress函数中就可以了
      

  7.   

    肯定可以的
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if NOT ((Ord(key)>=Ord('0') AND  Ord(key)<=Ord('9')) OR Ord(key)=Ord('-')
     OR Ord(key)=Ord('p')  OR Ord(key)=VK_BACK)  then
        key:=#0;
    end;
      

  8.   

    呵呵,incompatible type,不行呀
      

  9.   

    backspace 是 #8
    所以procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not (key in ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', 'p','#8']) then
        key:=#0;
    end;#8可能不要用单引号。
      

  10.   

    procedure TForm4.Edit5KeyPress(Sender: TObject; var Key: Char);
    begin
     if  not (((Ord(key)>=Ord('0')) and (ord(key)<=ord('9'))) OR (Ord(key)=VK_BACK) or (ord(key)=ord('-'))) then
        key:=#0;
    end;
    已测试,正确的代码,呵呵