Edit控件加强版

今天刚写了个只能输入数字的edit控件.因为是第一次修改组件,所以比较简单

写得不好,或不足的请大侠们多多提点意见..


unit MDedit;
interface
uses
  SysUtils, Classes, Controls, StdCtrls, Windows;

type
  TMDedit = class(TEdit)
  private
    { Private declarations }
    FChecknumber : Boolean;
    procedure SetChecknumber(const value:Boolean);
  protected
    { Protected declarations }
    procedure Keypress (var Key : char);override;
  public
    { Public declarations }
    constructor Create(AOwner : TComponent);override;
  published
    { Published declarations }
    property Checknumber : boolean
                    read FChecknumber write setChecknumber default true;
  end;


procedure Register;
implementation
procedure Register;
begin
  RegisterComponents('MySelf', [TMDedit]);
end;


{ TMDedit }
constructor TMDedit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FChecknumber := true;
end;


//由于中文字符占两个字节,因此当输入中文时会连续弹出两次提示信息.这个问题大家可以尝试用另一种方法替换. //目前我也还没有很好的办法解决这个问题.
procedure TMDedit.Keypress(var Key: char);
begin
  if FChecknumber then
  begin
     if not((key in ['1'..'9',#8]) ) then
     begin
       Messagebox(self.Handle,pchar('请输入数字'),pchar('提示信息'),MB_ICONWARNING);
       key := #0;
     end;
  end;
end;


procedure TMDedit.SetChecknumber(const value: Boolean);
begin
   FChecknumber := value;
end;

end.

猜你喜欢

转载自blog.csdn.net/ckboss/article/details/4360818