procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
  sText: String;
  nIndex: Integer;
begin
  if IsDBCSLeadByte(Ord(Key)) then bChinese := True;//用API判断是否中文首字符
  if not bChinese then sInput := Key
  else begin
    sInput := sInput + Key;
    Key := #0;//关键!有了它KeyPress会执行两遍,从而把两个中文字符都得到
  end;
  if not bChinese or (bChinese and (Length(sInput) = 2)) then begin
    if bChinese then begin//没办法,谁让咱第一次把Key给清了,只好模拟一下中文输入了:)
      Edit1.ClearSelection;
      sText := Edit1.Text;
      nIndex := Edit1.SelStart + 1;
      Insert(sInput, sText, nIndex);
      Edit1.Text := sText;
      Edit1.SelStart := nIndex + 1;
    end;
    Label1.Caption := sInput;
    bChinese := False;
    sInput := '';
  end;
end;