Help:限制文本框中只能输入中文··

解决方案 »

  1.   

      
     查這個函數的功能  ByteType
      

  2.   

    procedure TForm1.Edit1Change(Sender: TObject);
    var
      s:string;
      i:Integer;
    begin
      s:=self.Edit1.Text;
      i:=Length(s);
      if ByteType(s,i)<>mbTrailByte then
      begin
        s:=Copy(s,1,i-1);
        self.Edit1.Text:=s;
        Self.Edit1.SelStart:=i-1;
        MessageBox(application.Handle,'只能输入汉字','信息',MB_OK or MB_ICONINFORMATION);
        self.Edit1.SetFocus;
      end;
    end;
      

  3.   


    procedure TForm1.Edit1Change(Sender: TObject);
    var
      str:WideString;
      str1:string;
    begin
      str := Edit1.Text;
      str1 := str[Length(str)];
      if Length(str1) = 1 then
      begin
        ShowMessage('只能输入中文');
      end;
    end;
      

  4.   

    如果输入的不是中文,最好能将edit中的值清空··但执行清空操作后,ShowMessage会执行2次的··不知是否发现呢··
      

  5.   


    procedure TForm1.Edit1Change(Sender: TObject);
    var
      str:WideString;
      str1:string;
    begin
      str := Edit1.Text;
      if str = '' then Exit;
      str1 := str[Length(str)];
      if Length(str1) = 1 then
      begin
          Edit1.Text := Copy(Edit1.Text,1,Length(Edit1.Text)-1);
          Edit1.SelStart := Length(Edit1.Text);
      end;
    end;
      

  6.   

    呵呵,第一次见用WideString来识别中文的,不过很有道理。 另外你可以根据ASSIC来识别,中文的ASSIC大于128
      

  7.   

    procedure TForm1.edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if Key< #128 then
        Key:= #0;
    end;