如何编程实现文本框只能输入数字,不使用特殊控件,如何写代码

解决方案 »

  1.   

    KeyPress事件中屏蔽所有非数字的按键输入!
      

  2.   

    1方法.
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    if  (key in ['0'..'9']=false) and (word(key)<>vk_back) then
         begin
            key:=#0;
          end;
    end;
    2方法.
    使用setwindowlong 和getwindowlong 函数 如edit1 为例 
     SetWindowLong(Edit1.Handle, GWL_STYLE,
                      GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_NUMBER);
      

  3.   

    判断字符是否是数字
    function IsDigit(ch: char): boolean;
    begin
      Result := ch in ['0'..'9'];
    end;
    然后在keypress中调用
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    if  IsDigit(key) then
         begin
    showmessage('this is num');
            key:=#0;
          end;
    end;
      

  4.   

    我一直用
    dickeybird888(于伟刚)
    1方法.
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    if  (key in ['0'..'9']=false) and (word(key)<>vk_back) then
         begin
            key:=#0;
          end;
    end;
    不过小数就不行了。呵呵。得自己改一下
      

  5.   

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

  6.   

    有没有想过快捷键或右键菜单的情况呢?Ctrl+V! 哈哈,非法字符串统统进去了!所以……哈哈!
      

  7.   

    写上如下号码就可以屏蔽掉菜单和快捷键了。
    procedure TEditChannelForm.EditTelNoContextPopup(Sender: TObject;
      MousePos: TPoint; var Handled: Boolean);
    begin
    handled:=true;
    end;
      

  8.   

    最好用OnChange事件,不然如果粘贴过来就没办法控制了。
    另外,要支持小数和科学计数法,可以用VarIsFloat(Edit1.Text)或者VarIsNumeric