首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何显示键入的键的名称?

如何显示键入的键的名称?
EN

Stack Overflow用户
提问于 2019-03-29 04:44:48
回答 2查看 0关注 0票数 0

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

例如,虽然专注于TEdit并且键入A将显示A在相同的TEdit中。按下另一个按钮,如space酒吧,将显示SPACE

我不知道从哪里开始,我认为THOTKey是一个选项,但我无法输入我想要的空间。

EN

回答 2

Stack Overflow用户

发布于 2019-03-29 13:23:44

  1. 创建一个新的VCL项目。
  2. 删除TEdit窗体上的控件并清除其Text属性。
  3. 在它的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;
  4. 运行该项目。

我将把它作为练习让你研究实施的细节。

请注意:TEdit(Sender)类型转换本质上是不安全的:如果Sender不是TEdit(或者你知道的东西完全兼容),你就有一个主要的错误。这就是为什么这个代码在if Sender is TEdit then条件之下; 这使它非常安全。

票数 0
EN

Stack Overflow用户

发布于 2019-03-29 14:33:37

使用KeyDown事件而不是KeyPress事件。然后,您可以使用以下代码获得按下的键的文本表示:

代码语言:javascript
复制
uses Vcl.Menus;

procedure TForm1.Edit1KeyDown(
  Sender: TObject; var Key: Word; Shift: TShiftState);
begin
    TEdit(Sender).Text := ShortCutToText(ShortCut(Key, Shift));
    Key := 0;
end;

// Disable default behavior in other events
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  Key := #0;
end;

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  Key := 0;
end;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档