procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9',#8,#46]) then key := #0; end;
中EDITBOX的OnKeyPress中写程序 if (key<>#13) and (key <> #8) then begin if not (key in ['0','1','2','3','4','5','6','7','8','9'])then begin key := #0; end; end;
自己从TEDIT上继承一个组件写unit Edit1;interfaceuses Windows, Messages, SysUtils, Classes, Controls, StdCtrls;type TEdit1 = class(TEdit) private { Private declarations } protected { Protected declarations } public { Public declarations } procedure WMChar(var Message: TWMChar); message WM_CHAR; published { Published declarations } end;procedure Register;implementation //////////////////////////////////// /////////编写于 7-2 /////////////// ////用于人力资源////////////////// procedure Register; begin RegisterComponents('Samples', [TEdit1]); end; procedure tedit1.WMChar(var Message: TWMChar); begin if Chr(Message.CharCode)in ['0'..'9',#46,#13,#8,#190,#37,#37] then inherited;end; end.
if not (key in ['0'..'9',#13,]) then
他有专门的一个控件叫suiNumberEdit
不仅如此,而且可以控制输入的数字的格式
比如小数点后几位
自己做东西用这个很好,但是如果是商业应用就自己写吧,它是收费的!!!
或者更简单一点,只准输入正整数。
begin
if not (Key in ['0'..'9',#8,#46]) then key := #0;
end;
if (key<>#13) and (key <> #8) then
begin
if not (key in ['0','1','2','3','4','5','6','7','8','9'])then
begin
key := #0;
end;
end;
Windows, Messages, SysUtils, Classes, Controls, StdCtrls;type
TEdit1 = class(TEdit)
private
{ Private declarations } protected
{ Protected declarations }
public
{ Public declarations }
procedure WMChar(var Message: TWMChar); message WM_CHAR; published
{ Published declarations }
end;procedure Register;implementation
////////////////////////////////////
/////////编写于 7-2 ///////////////
////用于人力资源//////////////////
procedure Register;
begin
RegisterComponents('Samples', [TEdit1]);
end;
procedure tedit1.WMChar(var Message: TWMChar);
begin
if Chr(Message.CharCode)in ['0'..'9',#46,#13,#8,#190,#37,#37] then
inherited;end;
end.