edit有点小问题
procedure TForm.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Not (Key in ['1','2','3','4','5','6','7','8','9','0',chr(8)]) then
begin
Key := #0;
exit;
end;
if Edit1.Text='' then exit; //这里 我想在edit1里写数字 然后计算一些东西 可是要是edit1里只有一位数字的时候,Edit1.Text老是为空 要怎么办啊???
...
...
end;
问题点数:100、回复次数:13Top
1 楼Erice(白雪公猪)回复于 2005-08-04 10:55:09 得分 0
此时,KEY的值还没有写入EDIT的TEXT属性,当然为空了。你在这个事件里写判断是有错误的!!Top
2 楼hangguojun(布丁)回复于 2005-08-04 11:01:30 得分 0
同意白雪公猪
如果是方向键,DEL,怎么办,好象没有处理
Top
3 楼hangguojun(布丁)回复于 2005-08-04 11:05:04 得分 0
begin
if not (Key in ['0'..'9']) then
begin
key:=#0;
exit;
end;
end;
Top
4 楼hqhhh(枫叶)回复于 2005-08-04 11:10:50 得分 0
你可以放在Edit1失复查焦点的时候写,
----------------------
if Edit1.Text='' then exit; //这里 我想在edit1里写数字 然后计算一些东西 可是要是edit1里只有一位数字的时候,Edit1.Text老是为空 要怎么办啊???Top
5 楼myheartzhang(乔乔)回复于 2005-08-04 11:21:09 得分 0
如果EDIT不想为空的话,你在它失去焦点的时候写判断如:
procedure TFrm1.Edit1Exit(Sender: TObject);
begin
if Trim(Edit1.Text) <> '' then
exit;
end;
就可以了。Top
6 楼myheartzhang(乔乔)回复于 2005-08-04 11:23:09 得分 0
不好意思,把‘<>’改为‘=’打错了。Top
7 楼wqrz15()回复于 2005-08-04 13:57:44 得分 0
可是我后面要进行计算啊 要是不能用edit1.text的话 那只能用key了??
可是key又很不方便 并且我画的那个窗体 要用Edit1Exit事件 几乎不行
还有别的方法能让别人在写完字后 按确定按钮前就能计算出想要的结果吗?Top
8 楼hangguojun(布丁)回复于 2005-08-06 15:51:49 得分 0
你可以这样:
比如你要算 a * b = c;
a 即edit1
procedure tform1.edit1keypress(...)
begin
if key in ['0'..'9'] then
c := strtoint(edit1.text) * b;
end;
Top
9 楼tengxiang05(一座桥)回复于 2005-08-06 20:08:03 得分 0
当焦点失去之后再计算就是了
没有必要一边输一边计算
或者敲回车 计算也行Top
10 楼jkx01whg(爱迪01)回复于 2005-08-07 15:19:16 得分 0
同意楼上和"桥桥"Top
11 楼Nobu(老板有理,客户有钱,两头受气,什么玩意)回复于 2005-08-07 16:57:03 得分 0
if key = #13 then//当按下回车后
{计算代码}
不知道是不是楼主的意思Top
12 楼maxtool(≮From NingBoo≯)回复于 2005-08-11 10:07:06 得分 0
用打回车来计算Top
13 楼huiwww(十足菜鸟)回复于 2005-08-11 10:49:25 得分 0
TForm.Edit1KeyPress
表示在按键盘的时候触发,所以此时的edit.text内容还没有接受到键盘输入的key 值
你的
if Edit1.Text='' then exit;
在Edit1.Text='' 是没有意义的Top




