keypress 中是得不到中文输入的,你可以看一看输入法的帮助。
或者用spy看一看消息,中文大多数是WM_CHAR消息而不是WM_KEYDOWN等消息。所以KeyPress里是得不到中文的。

解决方案 »

  1.   

    可以换一种方法,在ONCHANGE事件里写代码。
      

  2.   

    楼上:
    KeyPress就是响应WM_CHAR消息而不是响应WM_KEYDOWN消息的。
    KeyDown才是响应WM_KEYDOWN消息的。
      

  3.   

    我用的是简体中文:
    var
      DblChr:Array[0..1] of Char = (#0,#0);
    procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
    begin
    if Key > #127 then
      if DblChr[0] = #0 then
        DblChr[0] := Key
      else
      begin
        DblChr[1] := Key;
        Label1.Caption := Label1.Caption + String(DblChr);
        DblChr[0] := #0;
      end
    else
      label1.Caption := Caption + Key;
    end;
    表现正常。
      

  4.   

    输入法不同的话他们所用的消息也不一样,有一段时间研究过各种输入法,虽然忘光了,但是还记得一点就是有些使用的是输入法的专用消息传递的,消息是什么我就不记得了:)
    你查查IME应该查的到。