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;
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;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货