1方法. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if (key in ['0'..'9']=false) and (word(key)<>vk_back) then begin key:=#0; end; end; 2方法. 使用setwindowlong 和getwindowlong 函数 如edit1 为例 SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_NUMBER);
判断字符是否是数字 function IsDigit(ch: char): boolean; begin Result := ch in ['0'..'9']; end; 然后在keypress中调用 procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if IsDigit(key) then begin showmessage('this is num'); key:=#0; end; end;
我一直用 dickeybird888(于伟刚) 1方法. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if (key in ['0'..'9']=false) and (word(key)<>vk_back) then begin key:=#0; end; end; 不过小数就不行了。呵呵。得自己改一下
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['1','2','3','4','5','6','7','8','9','0',,'.',#13,#8]) begin key := #0; end; end;
有没有想过快捷键或右键菜单的情况呢?Ctrl+V! 哈哈,非法字符串统统进去了!所以……哈哈!
写上如下号码就可以屏蔽掉菜单和快捷键了。 procedure TEditChannelForm.EditTelNoContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean); begin handled:=true; end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (key in ['0'..'9']=false) and (word(key)<>vk_back) then
begin
key:=#0;
end;
end;
2方法.
使用setwindowlong 和getwindowlong 函数 如edit1 为例
SetWindowLong(Edit1.Handle, GWL_STYLE,
GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_NUMBER);
function IsDigit(ch: char): boolean;
begin
Result := ch in ['0'..'9'];
end;
然后在keypress中调用
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if IsDigit(key) then
begin
showmessage('this is num');
key:=#0;
end;
end;
dickeybird888(于伟刚)
1方法.
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (key in ['0'..'9']=false) and (word(key)<>vk_back) then
begin
key:=#0;
end;
end;
不过小数就不行了。呵呵。得自己改一下
begin
if not (key in ['1','2','3','4','5','6','7','8','9','0',,'.',#13,#8])
begin
key := #0;
end;
end;
procedure TEditChannelForm.EditTelNoContextPopup(Sender: TObject;
MousePos: TPoint; var Handled: Boolean);
begin
handled:=true;
end;
另外,要支持小数和科学计数法,可以用VarIsFloat(Edit1.Text)或者VarIsNumeric