如何判断键盘输入一个中文字...(100分)

  • 主题发起人 主题发起人 jzyf
  • 开始时间 开始时间
J

jzyf

Unregistered / Unconfirmed
GUEST, unregistred user!
在窗体的键盘事件中如何判断键盘输入一个中文字?
 
诸位高手,难道就没有办法吗?
 
keypress里key>128就是汉字
要不你在ochange用selstart记录最后输入的字符,如果
最后一个byte<128 而前面的一字符byte>128说明这最后
2 byte组成的是汉字。
呵呵 给分
 
准确的应该是keypress在129-254之间。另外,输入中文时,每个汉字只触发一次keypress,
key等于汉字的首字节。
 
呵呵 255是null 大于128的char不就是129-254吗?他只要判断汉字啊
edit1keypress里
if key>#128 then
self.caption:='chinese'
else
self.caption:='english';
 
哈,看看这个http://www.delphibbs.com/delphibbs/DispQ.asp?LID=407783
 
呵呵 解决问题就可以了吧
dq:你如果熟悉输入法及相关的方面,可以和我联系吗? g622@xanet.edu.cn
 
在keypress事件中用如下代码
if key>chr(128) then
中文
else
非中文

该方法经过测试是可行的
 
一个中文字是二个字符,有没有办法当一个字符判断?我是要判断如果输入"#"(全角)
就启动另外的程序?
 
to wangyufan:你没看我那个帖子吗?用那个方法就应该可以啊:
把Form的KeyPreview设为True;给Form定义一个私有变量——
private
sInput: String;

procedure TForm1.FormCreate(Sender: TObject);
begin
sInput := '';
end;
然后在Form的OnKeyPress里:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if IsDBCSLeadByte(Ord(Key)) then sInput := sInput + Key;
if Length(sInput) = 2 then begin
if sInput = '#' then WinExec('c:/windows/notepad.exe', SW_SHOW);//具体文件名换成你实际用的
sInput := '';
end;
end;
 
后退
顶部