要求在EDIT框中,只能输入数字和小数点,给个例子,谢谢!

解决方案 »

  1.   

    OnKeyPressif not(Key in [#1..#31, '0'..'9','.','-']) then
      Key:= #0;
      

  2.   

    procedure Torm1.edit1KeyPress(Sender: TObject; var Key: Char);
    begin
        if not (Key in ['.',#8,'0','1','2','3','4','5','6','7','8','9']) then
          Key := #0;
    end;
      

  3.   

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

  4.   

    我想还要判断输入的字符串中是否已经有了一个‘.’如果已经有了的话
    也要把它给key:=#0;这样才不会出现24.3...4这样的数啊
    代码你自己想想就知道的,很简单啊
      

  5.   

    相似的问题不是刚刚有提过嘛
    在edit的KeyPresss事件中处理
      if not((key in 数字)or(key in 小数点)) then
        key:=#0;
      

  6.   

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

  7.   

    if key='.' then
       if pos('.',(sender as tedit).text)>0 then key:=#0;
    if not (key in['0'..'9','.',#8]) then
        key:=#0;
      

  8.   

    if key='.' then
       if pos('.',(sender as tedit).text)>0 then key:=#0;
    if not (key in['0'..'9','.',#8]) then
        key:=#0;
      

  9.   

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

  10.   

    同意foreveryday007(foreveryday007)的说法.
      

  11.   

    我认为最好不要在TEdit的OnKeyPress中进行检测,因为这样的话,每输入一个字符都将会进行一次检测,在调试时是很麻烦的,最好是随便用户输入,在对该数据进行处理之前再进行数据检测。
      

  12.   

    if not(Key in  '0'..'9','.']) then
      Key:= #0;
    在onkeypress里面
      

  13.   

    tform1.edit1keypress
    if not (Key in ['.',#8,'0'..'9']) then
       Key := #0;
      

  14.   

    应该这样
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    var
    s:set of char;
    begin
    s:=['.',#8,'0'..'9'];//可输入的字符
    if pos('.',edit1.text)>0 then
        s:=s-['.'];
    if not (Key in s)then
        Key := #0;
    end;
      

  15.   

    在 onexit 事件中处理,速度快,不用每一次按键都触发事件.
    const number=['0','1','2','3','4','5','6','7','8','9','.'];
    var
    i,flag:integer;
    msg:ansistring;
    begin
    msg:=edit1.Text;
    flag:=0;
    for i:=1 to length(msg) do
    begin
     if not (msg[i] in number) then
      begin
       flag:=1;
       showmessage('您输入的不是数字,请输入数字.');
       break;
      end;
    end;
    if(flag=1) then
     edit1.SetFocus;
      

  16.   

    这个帖子居然讨论得这么热烈,奇怪了!是不是因为分高?楼上好多位没有考虑 负数的 “-” 号。还有一个办法,这个办法用这并不方便,但是可以琢磨一下
    在OnChange事件里面写
      try
        if (Edit1.Text <> '') then
          StrToFloat(Edit1.Text);
        Edit1.ClearUndo;
      except
        if (Edit1.CanUndo) then
          Edit1.Undo;
      end;