如何让Edit控件只能输入一个汉字或一个字符(即使用Ctrl + V和用鼠标右键菜单中的粘贴也只能输入一个汉字或一个字符(123abc!~'等等)),
并且Edit里面的内容不会闪动?(既在按住Ctrl + V时Edit里面的内容不闪动)

解决方案 »

  1.   

    设置maxLength=2,另外在onchange事件中写代码实现了
    例:
    procedure TForm1.Edit1Change(Sender: TObject);
    begin
     if length(edit1.Text)>2 then
     edit1.Text:=edit1.Text;
    end;
      

  2.   

    用我这个,其中ByteType是取一个字节的类型,如果为mbLeadByte则说明其为汉字,否则为英文。procedure TForm1.Edit1Change(Sender: TObject);
    begin
      if length(edit1.text)>1 then
        if ByteType(edit1.text[1])<>mbLeadByte then edit1.text:=copy(edit1.text,1,1);
      if length(edit1.text)>2 then
        if ByteType(edit1.text[1])=mbLeadByte then edit1.text:=copy(edit1.text,1,2);
    end;
      

  3.   

    procedure TForm1.Edit1Change(Sender: TObject);
    var
      s: widestring;
    begin
      s := edit1.Text;
      if length(s) > 1 then
        edit1.text := edit1.Hint
      else
        edit1.Hint := edit1.text
    end;
      

  4.   

    ★★★我是楼主★★★
    楼上的各位,我先谢了。但是…………
    我要的是不闪的方法,在Chang事件里处理的话如果按住Ctrl + V时Edit里面的内容会闪动,我想是不是应该在Chang事件之前进行处理,用截获消息的方法?因为我看到一个用VB写的程序,他的Edit控件里只能输入一个字符或汉字,而且按住Ctrl + V时Edit里面的内容不会闪动,就象是设置Maxlength那种情况!但是(98下)如果设置Maxlength为1的话则不能输入汉字,所以只能设置为2,这时就要对输入的字符进行处理了。
    不闪的才是健康的!