我想使TEDIT只能输入数字,是否有属性设置一下就可以了,不想用KeyPress事件对按下的键进行处理,因为要用的TEDIT很多。如果没有现成的,哪位大侠教教我自己写一个控件。

解决方案 »

  1.   

    SetWindowLong(Edit1.Handle, GWL_STYLE,
          GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_NUMBER);
      

  2.   

    放在Timer里实时监控TEdit的KeyPress事件吧...
      

  3.   

    属性是没有,还是用
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not ( Key in ['0'..'9',#8]) then
        Key := #0;
    end;
    比较好
      

  4.   

    用TMaskEdit吧。
    或者自己写控件吧。
      

  5.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if key=#8 then exit;
       if key='.'then exit;
       if(key<'0')or(key>'9')then key:=#0;
    end;
    是最省事的方法
      

  6.   

    属性是没有,还是用
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not ( Key in ['0'..'9',#8]) then
        Key := #0;
    end;
    比较好
    是的,我一直这样用。也不复杂。
      

  7.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Edit2: TEdit;
        Button1: TButton;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        //定义如下一个过程
        procedure EditKeyPress(Sender: TObject; var Key: Char);
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      //对只输入数字的每个Edit设置属性OnKeyPress
      Edit1.OnKeyPress:=EditKeyPress;
      Edit2.OnKeyPress:=EditKeyPress;
    end;procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
    begin
      if not ( Key in ['0'..'9',#8]) then Key := #0;
    end;end.
      

  8.   

    ysai(大海呀,真TM的大) 的方法最简单。SetWindowLong(Edit1.Handle, GWL_STYLE,
          GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_NUMBER);
      

  9.   

    创建控件TMyEdit=class(TCustomEdit)
      private
        procedure EditKeyPress(Sender: TObject; var Key: char);
      public
        constructor Create(AOwner: TComponent); overload;
      end;{ TMyEdit }constructor TMyEdit.Create(AOwner: TComponent);
    begin
      Inherited Create(AOwner);  OnKeyPress:=EditKeyPress;
    end;procedure TMyEdit.EditKeyPress(Sender: TObject; var Key: char);
    begin
      if not ( Key in ['0'..'9', #8]) then Key := #0;
    end;var MyEdit: TMyEdit;procedure TForm1.FormCreate(Sender: TObject);
    begin
      Edit1.OnKeyPress:=EditKeyPress;  MyEdit:=TMyEdit.Create(self);
      MyEdit.Parent:=self;
      
      MyEdit.Left:=100;
      MyEdit.Top:=50;
      MyEdit.Width:=200;
      MyEdit.Height:=30;
    end;
      

  10.   

    楼上的都写了,还是觉得这种最好
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not ( Key in ['0'..'9',#8]) then
        Key := #0;
    end;