哪位大哥能让RichEdit不能输入中文?不要说在Onpress事件中加入代码,因为输中文时跟本就不能触发该事件!

解决方案 »

  1.   

    var s:string;
    procedure TForm1.RichEdit1Change(Sender: TObject);
    begin
      if length(widestring(richedit1.Text))
        <>length(richedit1.Text) then  richedit1.Text:=s
      else
        s:=richedit1.Text;
      richedit1.SelStart:=length(richedit1.Text);
    end;
      

  2.   

    procedure Tform.RichEdit1KeyPress(Sender: TObject;
      var Key: Char);
    begin
      inherited;
      if not (key in ['0'..'9','.',#13,#27,#8]) then
      key := #0;;
    end;
      

  3.   

    判断输入字符的ascll码是否大于a0也可以
    不过还是jinjazz的好
      

  4.   

    workers(宁可中日永不好!誓死夺回钓鱼岛!) ,我也爱国,但是我感觉您的方法不怎么正确。
      

  5.   

    jinjazz的还不错,不过这个只适合在全部文本的状态,我在实际应用中是要调入OLE的东西的,只能判断键码来调用,所以感觉还是有点不行啊
      

  6.   

    替换编辑器缺省的WndProc,在新过程中捕获WM_CHAR消息,发现是中文抛掉就行了。
    这要借助两个过程(MakeObjectInstance, SetWindowLong)和LeadByte字符集。if key in LeadByte then // 是双字节字符
      ......
      

  7.   

    好像在WndProc的WM_CHAR消息中也只能拦到英文的输入,对中文的输入是没用的,不知您是怎么用的?