关于Edit中只输入数字的简单问题

microjuz 2003-07-12 05:22:31
在keypress事件里的方法我已经知道了
如何在keydown事件里面写。。。(请试过以后再贴您的答案)

当写了只准输入数字的判断以后,如果用户想要用ctrl+v的方法拷贝一长串的字符串就不行,请问如何解决。
...全文
76 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouhaijun2 2003-07-13
  • 打赏
  • 举报
回复
戏白演了:(
microjuz 2003-07-13
  • 打赏
  • 举报
回复
结贴了:(
zhouhaijun2 2003-07-12
  • 打赏
  • 举报
回复
我的这一枪应该可以吧。
zhouhaijun2 2003-07-12
  • 打赏
  • 举报
回复
1.对付右键:设一个空字符的menu1,让edit1的popupmenu=menu1
2.对付ctrl+v:
procedure TForm1.myKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
(Sender as Tedit).readonly:=true;
if (key=86) and (ssCtrl in Shift) then exit;
if ((key>=48) and (key<=57)) then
(Sender as Tedit).readonly:=false;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.OnKeyDown:=myKeyDown;
edit2.OnKeyDown:=myKeyDown;
edit3.OnKeyDown:=myKeyDown;
end;
microjuz 2003-07-12
  • 打赏
  • 举报
回复
:(林子大了,什么鸟都有
alphadyz 2003-07-12
  • 打赏
  • 举报
回复
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (key in['A'..'z']) or (key >'z') then
key:=chr(0);
end;
这样就好啦!:)
alphadyz 2003-07-12
  • 打赏
  • 举报
回复
不过要输入汉字又不行了!我只能提供一种想法吧!希望对你有帮助!
alphadyz 2003-07-12
  • 打赏
  • 举报
回复
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key in['A'..'z'] then
key:=chr(0);
end;
这样就可以了!
microjuz 2003-07-12
  • 打赏
  • 举报
回复
ai..大家都不看问题就回答,都没有分!!!
wdong18 2003-07-12
  • 打赏
  • 举报
回复
MASKEDIT 的INPUT MASK录这个就可以了
!000000000000000;1;_
microjuz 2003-07-12
  • 打赏
  • 举报
回复
杀,太不够意思了,就说这么点点
Eastunfail 2003-07-12
  • 打赏
  • 举报
回复
uses TMaskEdit
kuchong 2003-07-12
  • 打赏
  • 举报
回复
procedure tform1.edit1keypress(sender:tobject;var key:word;shift:tshiftstate);
begin
if not(key in ['0'..'9']) then key:=#0;
end;
绝对好用
microjuz 2003-07-12
  • 打赏
  • 举报
回复
楼上的,这个方法我知道。。。
我只是想在onkeydown里面写
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if not ((key<=$39) and (key>=$30)) and not ((key<=$69) and (key>=$60)) then
  。。。。这里应该写什么呢?
end;
ghostmirror 2003-07-12
  • 打赏
  • 举报
回复
晕,没看题目就写了。。。。。。
你还是用setwindowlong,从根本解决问题
ghostmirror 2003-07-12
  • 打赏
  • 举报
回复
两种方法,看好了
方法一:在oncreate事件中加入SetWindowLong(Edit1.Handle, GWL_STYLE,
GetWindowLong(Edit1.Handle, GWL_STYLE) or
ES_NUMBER);
方法二:在edit的onkeypress事件中
if (key<'0')or (key(key>'9')then key:='';
walterwl 2003-07-12
  • 打赏
  • 举报
回复
如果要求不严,在onexit里判断,具体如下:
procedure TForm1.Edit1Exit(Sender: TObject);

begin
try
strtoint(edit1.Text );
except
showmessage('请输入数字!');
edit1.SetFocus;
exit;
end;
end;
需要注意的是,在编译的时候程序会报错,但是执行exe文件就不会有错.
linzhisong 2003-07-12
  • 打赏
  • 举报
回复
还是有一点点的小问题就是了

linzhisong 2003-07-12
  • 打赏
  • 举报
回复
这个基本能解决问题
linzhisong 2003-07-12
  • 打赏
  • 举报
回复
procedure TForm1.Edit1Change(Sender: TObject);
begin
if (Sender as TEdit).Text='' then exit;
try
StrToFloat((Sender as TEdit).Text);
except
(Sender as TEdit).Text:=Copy((Sender as TEdit).Text,1,
Length((Sender as TEdit).Text)-1);
(Sender as TEdit).SelStart:=Length((Sender as TEdit).Text);
end;
end;
加载更多回复(2)

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧