1. 程式人生 > >Edit控制元件加強版

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.