请教个问题,如何让输入框只能输入英文输入法下输入的字符?
1.最好能限制粘贴的时候也不允许非法字符.
2.不行的话进入输入框时限制输入法也可以.请做过的朋友指点一下,谢谢!输入法

解决方案 »

  1.   

    procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char);
    begin
      if ((ord(key) > 128) and (key <> #8)) then key := #0;
    end;不知道是否符合要求
      

  2.   

    在change事件里用正则处理,还可以避免复制粘贴上中文。
      

  3.   


    uses PerlRegEx; // 需要下载 PerlRegEx ,XE或以上版本则自带了正则库// Change 事件中处理可以规避输入或粘贴的汉字
    procedure TForm1.edt1Change(Sender: TObject);
    var
      regx: TPerlRegEx;
    begin
      regx := TPerlRegEx.Create(nil);
      regx.Subject := edt1.Text;
      regx.RegEx := '[^x4e00-x9fa5]*';
      regx.Replacement := '';// 任何汉字都被替换空字符
      regx.ReplaceAll;
      edt1.Text := regx.Subject;
      edt1.SelStart := Length(edt1.Text); // 让光标移到最后,不要的话就去掉
      FreeAndNil(regx);
    end;