procedure TTicketdeleteForm.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
//
   if( key<='9' )and (key>='0' )   then
     exit;
   if key=#18 then     //当用户输入时有错误,可以用后退键来删除.Backspace的ASCII是多少?
      exit             //应该不是18吧.   
    else
    key:=#39;         //若是其它键,则不输入进去.这句话应该如何写?
procedure TEditSalesForm.Button1Click(Sender: TObject);begin
//
  if edit1.SelLength<14 then
  begin
     showmessage('请确认所输入的券号长度不小于14位!');
     edit1.SetFocus;
  end;   //无论我输入的字符有多长,这个消息框总会显示.
应该改哪里?

解决方案 »

  1.   

    procedure TEditSalesForm.Button1Click(Sender: TObject);begin
    //
      if Length(Trim(edit1.Text))<14 then
      begin
         showmessage('请确认所输入的券号长度不小于14位!');
         edit1.SetFocus;
      end;
    end;
      

  2.   

    不用那么麻烦。
    setwindowlong(edit1.handle, GWL_Style, GetWindowLong(edit1.handle, GWL_STYLE) or ES_NUMBER)
    就可以了。
      

  3.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not (key in ['0'..'9']) then key:=#0;
    end;
    如果要防止粘贴的话,还要另外处理。
    edit1.SelLength表示你选择的长度。
    用 length(edit1.text)
      

  4.   

    两种方法:
    A、用STRTOINT(STRTOFLOAT)函数判断。
    B、自定义一个函数来判断。
    function IsInt(s:string):boolean;
    //查询当前数据是否数字型;
    var i:integer;
        pValue:pchar;
    begin
    result:=false;
    pValue:=StrPch(trim(s));
    for i:=0 to length(s)-1 do
    begin  //for loop ;
     if pValue[i] in ['0','1','2','3','4','5','6','7','8','9'] then
      result:=true
     else
      begin
        result:=false;
        exit;
      end;
    end;   //for loop;
    end;
      

  5.   

    TO:Cheney(新兵卫)
    setwindowlong????
    我查了DELPHI帮助,没这个东东。
    能解释一下码?
      

  6.   

    procedure TTicketdeleteForm.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    //
       if not (Key in ['0'..'9','.']) then  //如果能输入小数的话
       if not (Key in ['0'..'9']) then  //如果输入整数的话,这两句任选一个。
       begin
         Key:=#0;
         exit;
       end;
    end;
      

  7.   

    if not (Key in ['0'..'9', #9, '.', '-']) then 
       begin
         Key:=#0;
         exit;
       end;
      

  8.   

    #8或Char(8)或#$8都可以是“回退键”
      

  9.   

    这样试试:
    procedure TForm.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not (key in ['0'..'9','.',#8,#13])
        then begin
               Beep;
               Key:=#0;
             end;
       
    end;procedure TEditSalesForm.Button1Click(Sender: TObject);begin
    //
      if Length(Trim(edit1.Text))<14 then
      begin
         showmessage('请确认所输入的券号长度不小于14位!');
         edit1.SetFocus;
      end;
    end;