zoukankan      html  css  js  c++  java
  • 限制TEdit控件只能输入数字,小数点和负号

    执行这些代码,Edit1只能输入数字、小数点和负号,负号和小数点只能输入一个,负号必须在最前,粘贴的数字必须完全正确,不能以限制Ctrl_V的使用为前提。

    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        procedure FormCreate(Sender: TObject);
      private
        Edit1OldProc: TWndMethod;
        procedure Edit1NewProc(var Message: TMessage);
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    uses Clipbrd;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Edit1OldProc := Edit1.WindowProc;
      Edit1.WindowProc := Edit1NewProc;
    end;
    
    procedure TForm1.Edit1NewProc(var Message: TMessage);
    var
      s: string;
      v: double;
    begin
      case Message.Msg of
        WM_PASTE:
          begin
            s := Clipboard.astext;
            s := copy(edit1.Text, 0, edit1.SelStart) + s + copy(edit1.Text, edit1.SelStart + edit1.SelLength, length(edit1.Text));
            if trystrtofloat(s, v) then
              Edit1OldProc(Message)
            else
              ShowMessage('只允许输入数字');
          end;
        WM_CHAR:
          begin
            if (TWMCHAR(Message).CharCode = 45) then
              if (Pos('-', Edit1.Text) = 0) and (Edit1.SelStart = 0) then
              Edit1OldProc(Message);
            if (TWMCHAR(Message).CharCode = 46) then
              if (Pos('.', Edit1.Text) = 0) then
              Edit1OldProc(Message);
            if TWMCHAR(Message).CharCode in [48..57, 8, 3] then
              Edit1OldProc(Message);
            if (TWMCHAR(Message).CharCode = 22)  then
              Edit1OldProc(Message);
          end;
      else
        Edit1OldProc(Message);
      end;
    end;
    


  • 相关阅读:
    快速构建一个vue项目的开发环境(基础)
    一个vue的简单例子
    webpack基础使用
    程序日志正常,linux进程异常终止,如何查看日志
    mysql多字段排序
    mysql连表
    go网络
    go通道关闭
    【软考】CMMI的5个等级和22个过程域
    maven工程导入时解决Cannot change version of project facet Dynamic Web Module to 2.3
  • 原文地址:https://www.cnblogs.com/xieyunc/p/9126490.html
Copyright © 2011-2022 走看看