gpt4 book ai didi

delphi - 如何显示键入键的名称?

转载 作者:行者123 更新时间:2023-12-03 19:01:56 25 4
gpt4 key购买 nike

我想在TEdit中显示按下的键的名称。

例如,当专注于TEdit时,键入A将在同一TEdit中显示A。按另一个按钮(例如空格键)将显示SPACE

我不确定从哪里开始,我以为THotKey是一个选项,但是我无法输入想要的空间。

编辑//

阅读一些回复后,开始非常有帮助,但是我遇到了不确定如何解决的问题。

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Sender is TEdit then
case Key of
chr(65):
begin
TEdit(Sender).Text := 'A [65]';
Key := #0;
end;
chr(VK_NUMPAD1):
begin
TEdit(Sender).Text := '1';
Key := #0;
end;
chr(32):
begin
TEdit(Sender).Text := 'SPACE [32]';
Key := #0;
end;
else
TEdit(Sender).Text := 'NONE';
end;
end;


65是大写字母A,尽管我不喜欢它,但我可以输入65和97以得出相同的结果。

VK_NUMPAD1或任何其他VK_NUMPAD *不起作用,并且在编译时不会给我错误。我不确定如何解决此问题。

我输入了别的字符,因为我不想输入某些字符,但是结果不是我想要的。例如,当我键入z(我不想要的东西)但它变成“ zNONE”时,我期望文本为“ NONE”。如何删除“ zNONE”的“ z”部分

我发现VK_SPACE和32是相同的,但无法弄清楚如何查看NUMPAD。

谢谢。抱歉回复晚

最佳答案

创建一个新的VCL项目。
在窗体上放置一个TEdit控件,并清除其Text属性。
在其OnKeyPress事件处理程序中,编写

procedure TForm5.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Sender is TEdit then
case Key of
chr(VK_SPACE):
begin
TEdit(Sender).SelText := ' SPACE ';
Key := #0;
end;
end;
end;

运行项目。


我将其作为练习来研究实现的细节。

请注意: TEdit(Sender)类型转换本质上是不安全的:如果 Sender不是 TEdit(或者您知道完全兼容的东西),则可能会遇到重大错误。这就是为什么此代码位于 if Sender is TEdit then条件之下的原因;这使其非常安全。

关于delphi - 如何显示键入键的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55391717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com