问题同题目
解决方案 »
- 如何把jpg格式图片转换成html代码 用打开html文件形式打开
- 关于delphi,gbgrid的取值问题。。
- 我一直想知道如何让Delphi生成的默认界面在windows7下显示成win7风格
- Oracle数据库查询?
- 各位高手指教。如何得到在动态链接库中创建的对象(需要再主程序中调用),我现在的方法在运行时总是出错。
- 为什么表中记录数与实际数不符???
- 级联二级代理(本机->局域网代理->外网代理服务器->访问其他资源)
- 怪!怪!怪!为什么ComboBox删除了一个Item后不能自动更新其Text值,我用了Refresh方法都没用!
- 有人听说过"及时雨"这个软件吗?
- 谁能把(全部)键盘的控制数字告诉我
- indy10 发送邮件过程中如何停止?
- delphi里主变量怎样用到sql语言里
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key<'0' or Key>'9' then Key=#0;
end;
Shift: TShiftState);
begin
if Key<'0' or Key>'9' then Key=#0;
end;===================================
这样只能输入整数,且输入错误后不能删除
Key := #0;
==================================================
这是我用的方法,但不能限制输入这样的情况 例如:15...
这样就会出错
begin
while True do
begin
if Key=#13 then
Exit;
if Key=#8 then
Exit;
if (Pos('-',TEdit(Sender).Text)>0) and (Pos('-',TEdit(Sender).SelText)=0) and (TEdit(Sender).SelStart=0) then
break;
if Key in [('-'),('.'),'0'..'9'] then
begin
if (Key=('-')) and (((Pos('-',TEdit(Sender).Text)>0) and (Pos('-',TEdit(Sender).SelText)=0)) or (TEdit(Sender).SelStart<>0))then
break;
if (Key=('.')) and (Pos('.',TEdit(Sender).Text)>0) then
if (Pos('.',TEdit(Sender).SelText)=0) then
break;
Exit;
end;
break;
end;
Key:=#0;
end;
谢谢你的回复,你的方法我测试通过了。
因为如果用户粘贴你还不是死定?并且粘贴有三种(至少我知道有三种),你不会也一一搞定吧。
在做其它之前
if StrToIntDef(UserInput, YourDefaultValue) = YourDefaultValue then
begin
// AskUserToInputAgain
end;
一般用个弹出菜单把edit的粘贴屏蔽,加上代码屏蔽了Ctrl+V 就ok了,所以基本上没什么问题,你说的3种我就想不起第三种是什么。
第三种:Shift+Insert
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key=#$8) or (key=#$9) or (key=#$D) or (key=#$A) then exit;
//如果需要小数点 或符号,分两步只为了方便阅读
if (key='.') or (key='+') or (key='-') then exit;
if (Key<'0' or Key>'9') and (key<>'.') then Key=#0;
end;在使用时
var intval:integer;
begin
if not trystrtoint(edit1.text,intval) then
begin
//格式不对提示
exit;
end;
//......
end;另外,delphi自带maskedit控件可以完成一半输入格式限制,但不灵活,并且不能很好处理中文输入。
public static bool IsNumeric(string str)
{
if (str == null || str.Length == 0)
return false;
System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding();
byte[] bytestr = ascii.GetBytes(str);
for (int i=0;i<bytestr.length;i++)
{
if ( bytestr[0]= 51)
{ return false;}
if (bytestr[i] < 46 || (bytest[i]> 46 && bytestr[i] <48 )||c>57)
{
return false;
}
if (bytestr[bytestr.length ] =51)
{return false;
}
return true;
}
另外 对 字符 .进行判断,头字符.的 return false
尾字符.的返回false
'只能输入一个小数点
If KeyAscii = 46 And InStr(1, Text1.Text, ".", vbTextCompare) Then KeyAscii = 0
'只能输入数字和小数点,但可以使用退格键
If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> 46 And KeyAscii <> 8 Then KeyAscii = 0
'控制"0"的个数
If Left(Text1, 1) = "0" And Len(Text1) < 2 And KeyAscii = 48 Then KeyAscii = 0End Sub