我现在做的程序要求限制用户输入输入Edit中的字符必须为汉字,请问在如何实现?
万分着急!
请同仁们看到的话速回,小子不胜感激!

解决方案 »

  1.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if (ord(key)<128) and (key<>#8) then
      key:=#0;
    end;
    ------------
    但是仍然可以用鼠标的右键菜单粘贴非中文字符
      

  2.   

    在onexit事件中,写个检查EDIT中是否为汉字的代码,不就行了,具体代码网络上多的要命,就不写了
      

  3.   

    cll007(gazo) 说的有理
    确定的时候再检查就解决问题了
      

  4.   

    不用判断ASCII码,这样就行了:
    在确定的按钮click事件中写:
    var
      WS:WideString;
    begin
      WS:=Edit1.Text;
      if Odd(Length(Edit1.Text)) or (Length(WS)<>(Length(Edit1.Text) div 2) ) then
        showMessage('必须输入中文');
    end;
      

  5.   

    没办法。黑就黑点吧
    ,在onchange事件中更黑
      

  6.   

    OnMouse之类事件和输入相关的时间OnKeyPress,OnEnter,OnExit中都检测一下Text
    只有不是中文就Clear......似乎更黑
      

  7.   

    这个我会!!!
    碰巧我刚刚也遇到了类似的问题;
    var
    a:string;begin
    a:=edit1.text;
    for i:=1 to length(a) do 
        begin
        if (i mod  2 <> 0) and (ord(a[i])>128) then continue;  // 每个汉字占2字节,且汉字的第一个字节的ASCII码>128,而英文<128
        if i mod 2=0 then continue;
        end;
    if i<>length(a) then ERROR;//如果不是正常结束循环则发出错误信息
    end;
      

  8.   

    汉字是双字节码,OnKeyPress不能判断。
    因为用户肯定是用输入法输入的,按的肯定是英文。
      

  9.   

    我怎么老觉得有人在 程序这个领域里歧视中文呢!!!!和英文有什么区别?Edit1KeyPress(Sender: TObject; var Key: Char);
     不能防止PASTE。。放到 OnChange里去呢?
      

  10.   

    : cll007(gazo) 
    : devil_li() 
    两人的合在一起
      

  11.   

    不用解释:
    var
    a:string;begin
    a:=edit1.text;
    for i:=1 to length(a) do 
        begin
        if (i mod  2 <> 0) and (ord(a[i])>128) then continue;  // 每个汉字占2字节,且汉字的第一个字节的ASCII码>128,而英文<128
        if i mod 2=0 then continue;
        end;
    if i<>length(a) then ERROR;//如果不是正常结束循环则发出错误信息
    end;就这样做 .
      

  12.   

    哈哈,我有办法了!看代码function HaveGB2312(const temp:string):boolean;
    var
      s:string;
      w:widestring;
    begin
      w:=temp;
      s:=temp;
      if length(w)=length(s) then //这样可以判断出该字符中是否包含双字节的字符
         result:=false
      else
         result:=true;
    end;很简单的,不用楼上那样麻烦吧!