今天刚写了个只能输入数字的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.