|
100鱼币
本帖最后由 南方的人 于 2015-3-26 12:37 编辑
- procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);//只能输入Real 数据
- var
- c: integer;
- begin
- // 加入代码让edit1只能输入数字
- if Key = '.' then <span style="background-color: rgb(255, 0, 255);"> //如果这里改为#110,就一个都不能输入,为什么这个是只能输入一个' . '呢?</span>
- begin
- for c := 1 to Length(TEdit(Sender).Text) do
- begin
- if TEdit(Sender).Text[c] = '.' then
- Key := #0;
- end;
- end
- else if Key = #13 then
- Perform(WM_NEXTDLGCTL, 0, 0)
- else if Key = #8 then
- Key := #8
- else if (Key < '0') or (Key > '9') then
- Key := #0;
- end;
复制代码 求大神解释下
|
最佳答案
查看完整内容
不知道你这段程序是用在哪的,但是我尝试了单独把他拿出来单步调试,看本地变量值,测试可以看出,我让edit1.text初始值为'.23',那么如果输入'.'程序进入6行至13行的判断,c=1时,判断的是edit1.text[0],即第一个点,然后执行了key:=#0,然后继续循环直到比完edit1.text的所有字符(个人认为这里加个break更好);同样条件下,我将循环条件改为for c:=0 to Length(TEdit(Sender).Text)-1 do,那么检测的TEdit(Sender).Text[0]不是 ...
|