如何识别按键上的unicode键?

时间:2010-02-03 09:43:32

标签: delphi unicode delphi-2009

我的应用程序使用unicode字符,我有几个文本字段,我想限制用户输入特殊字符,如:'“;

begin
    if not (Key in ['a'..'z','A'..'Z',' ','0'..'9',#13,#8]) then
        Key := #0;
    if Key = #13 then
        bOk.Click;
end;

所以此时它允许用户添加空格并使用退格键来擦除,当然还有输入密钥来确认。

我想要输入的unicode字符很少。 ą,č,ė,į,š,ų,ū,ž 和他们的大写替代品,但只是将它们添加到集合中......

Key in ['a'..'z','A'..'Z',' ','0'..'9',#13,#8,'ą'..'ž','Ą'..'Ž']

...什么都不做,我仍然不能在文本字段中写这些符号。

我想知道,如何解决这个问题。有没有办法判断按下的键是否是我正在寻找的unicode字符?

谢谢

2 个答案:

答案 0 :(得分:7)

如果您使用的是D2009或更高版本,则会出现一个名为字符的单元,其中包含 IsLetterOrDigit IsLetter 等功能。你需要。

答案 1 :(得分:4)

编译应用时请注意提示和警告。忽略它们就是忽略潜在的问题

您应该收到警告:“WideChar减少为字节char ...”。问题在于:Key在您的设置操作中不再是Unicode!

警告建议您使用CharInSet;你也可以查看TCharacter(一个带有类函数的特殊类来识别某些类别的字符)。如果这些都不符合您的要求,则使用字符串常量和所有有效字符,并使用Pos函数确定Key是否存在。

最后,您可能更愿意考虑排除特定字符,而不是试图考虑您想要包含的每个特定字符。