可以在EDIT被写的时候判断按键是否是数字!

解决方案 »

  1.   

    是不是如果存在非数字就会出错?
    最有效的方法就是用
    try
    except
    end;或者通过字符串数组处理。
    edit2.Text[序数]
      

  2.   

    可以把判断写在Edit的Change事件里。
      

  3.   

    procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
    begin
      if (Key<>#8)and(Key<>#9)and(Key<>#13)and(Key<>#27)and(Key<>#46) then
        if (key<'0') or (key>'9') then
        begin
          showmessage('error');
          key := #0;
        end;
    end;
      

  4.   

    请问ASP_Boy这位朋友#8,#9等是什么意思!!
      

  5.   

    我开始用
    try
    strtoint(edit1.text)
    except
    showmessage('');
    exit;
    end;
    可是这样还是没用呀!!
      

  6.   

    我自己写了一个Edit控件,
    可以选择只能输入整型、浮点型、所有的字符,
    还可以设置显示格式,如:¥12,345.67,(不是MASK)
    你要的话给我MAIL:[email protected]
      

  7.   

    ASCII码应该看看。
    不赋值当然没用。
    procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
    begin
      if (Key<>#8)and(Key<>#9)and(Key<>#13)and(Key<>#27)and(Key<>#46) then
        try
          edit1.Text  :=edit1.Text + char(strtoint(key));
        except
          key := #0;
        end;
    end;CTRL+V是组合键,当时没有考虑到。
    有简单的方法解决吗?
      

  8.   

    无聊之间试试。
    解决了。unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        procedure Edit1KeyDown(Sender: TObject; var Key: Word;
          Shift: TShiftState);
        procedure Edit1KeyPress(Sender: TObject; var Key: Char);
      private
        boolFlag : boolean;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if ((shift=[ssctrl]) and (key in [86,118])) or (chr(key) in [#27,#17,#13,#46,'0'..'9',#9,#8]) then
      begin
        boolFlag := true;
      end
      else
        boolFlag := false;
    end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not boolFlag then
        key := #0;
    end;end.