在 CLX TEdit 的 KeyPress 事件中拦截 TAB 键

2023-12-05

我有一个 TEdit(VisualCLX 组件),我想覆盖 onKeyPress 事件中 TAB 键的行为,但是如果我尝试拦截 KeyPress 事件中的 TAB 键,它将不起作用,因为当在 TEdit 上按下 Tab 键。

如何拦截 TEdit Control 的 KeyPress 事件上的 TAB 键?


编辑事件不适用于导航键Tab因为这些不会触发键盘事件。唯一指出这一事实的地方。Delphi 帮助 TCustomForm.KeyPreview

要进行测试,请在表单上放置 3 个 TEdit (CLX) 和一个 TMemo。
Tab 键顺序为 Edit1、Edit2、Edit3
您可以使用的唯一事件是 KeyUp 事件

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    Memo1.Lines.Add('Edit1KeyUp');
end;

procedure TForm1.Edit2KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    Memo1.Lines.Add('Edit2KeyUp');
end;

procedure TForm1.Edit3KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    Memo1.Lines.Add('Edit3KeyUp');
    if Key = VK_TAB then begin
       Edit2.SetFocus;
    end;
end;
  • 将光标放在Edit2输入字段中
  • 按 Shift 选项卡

    • 光标移动到编辑1字段
    • 备忘录1显示

      编辑1按键
      编辑1按键

  • 按标签

    • 光标移动到编辑2字段
    • 备忘录1显示

      编辑2按键

  • 按标签

    • 光标尝试移动到编辑3字段
    • 用命令Edit2.SetFocus;
      我们将光标发送回 edit2
    • 备忘录1显示

      编辑3键向上

因此,使用 TAB 键,用户永远无法离开 edit2

enter image description here

例如:在 Edit3KeyUp 事件中,您可以将 #9 添加到 Edit2.Text。

    if Key = VK_TAB then begin
       Edit2.SetFocus;
       Edit2.Text := Edit2.Text+#9+'<- a Tab here'; 
    end;

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 CLX TEdit 的 KeyPress 事件中拦截 TAB 键 的相关文章

  • 如果鼠标不在 VirtualTreeView (TVirtualStringTree) 上,如何禁用 MouseWheel

    如果 TVirtualStringTree 获得焦点 则默认情况下它会在鼠标滚轮上滚动 即使鼠标未超出控制范围 除非它位于另一个 TVirtualStringTree 上方 有没有一种快速而优雅的方法来禁用这种行为 我已经这样做了OnMou
  • 创建FileStream时如何处理异常

    我有一个这样的函数 我想重构它 function Myfunction sUrl sFile String Boolean var GetData TFileStream begin Result False if the line bel
  • 如何更新Delphi对象检查器?

    继我最近发布的这个问题之后 组件编辑器可以在多个组件上执行吗 https stackoverflow com questions 14802371 can a component editor be executed on multiple
  • 如何添加资源并使用它们

    在我的应用程序中 我想添加 2 个图像作为资源 我想使用这些图像 当我在应用程序中单击 是 按钮时 第一张图像将被设置为壁纸 当我在应用程序中单击 否 按钮时 第二张图像将被设置为桌面壁纸 提前致谢 regards 最简单的方法是创建一个文
  • 在运行时创建 TQReport 元素

    在运行时创建 TQReport 元素 嗯 至少尝试一下 我不知道这份报告中应出现哪些标题或数据 我得到一个代表数据行和列的 TString 的 TList 我在组的带打印事件中植入 创建 指令 并在主数据行带的 OnNeedData 事件中
  • 错误:使用 Microsoft WebService.dll 通过 Delphi7 规范化 XML

    我正在使用 Delphi7 修改旧项目以添加使用证书和签名 经过一番搜索后我发现XML 规范化函数 https learn microsoft com en us previous versions dd815358 v vs 85 但我无
  • 使用普通画布/文本输出更新LayeredWindow

    有没有一种方法可以使用画布在表单上绘图 然后使用 updatelayeredwindow 这样表单就不可见 但文本可见 就像只显示文本的半透明表单一样 如果没有 那么有没有办法只用画布 opengl directx 制作某种半透明形式 我想
  • 如何仅在调试模式下激活 ReportMemoryLeaksOnShutdown?

    我需要激活ReportMemoryLeaksOnShutdown报告应用程序内存泄漏的功能 但仅限于调试模式 当 Delphi IDE 运行时 我怎样才能做到这一点 如果您的意思是使用调试构建配置 D2007 编译的 调试模式 则您将定义
  • 如何避免使用 WinApi.Windows 的 Delphi 应用程序中的 dll 劫持

    Delphi 最新版本使用各种系统 dll 的静态链接 例如 WinApi Windows 单元中的 version dll 这会导致在单元初始化之前加载 version dll 这会打开一个安全漏洞 可以通过将受感染的 version d
  • 在运行时按需更改组件类

    我的问题与这里的想法类似 替换delphi中的组件类 https stackoverflow com q 4685863 937125 但我需要改变一个specific按需组件类 这是一些伪演示代码 unit Unit1 TForm1 cl
  • Delphi - 自XE8以来如何正确注册图形类?

    我正在编写一个 Delphi 包 它提供了一个新的自定义 TGraphic 对象 允许读取 VCL 组件 如 TImage 中的新图像格式 我最初使用 RAD Studio XE7 开发了这个包 并且运行良好 然而 我最近迁移到了较新的 R
  • 带位图的简单组合框

    如何将位图放入组合框中并将样式设置为简单 例如 Google Chrome 的右侧有星号 Firefox 的右侧有箭头 我尝试了这段代码 procedure TForm2 ComboBox1DrawItem Control TWinCont
  • 如何将 REST API 与 FireMonkey 结合使用?

    我需要在 FireMonkey 中实现 REST API 来获取一些信息 但我不确定如何做到这一点 REST API使用OAuth2 我可以访问两个代码 Consumer Key和Consumer Secret 之后 我需要获得一个临时的
  • 如何仅使用 TADOQuery 组件将图像插入数据库

    我有一个简单的基本问题 我正在尝试使用将图像插入数据库Insert与其他列值的语句也使用TADOQuery成分 由于代码已经由某人编写 因此我想在此处放置一些虚拟示例代码 以供您澄清相应的步骤 请注意 这可以正常工作TQuery组件 因为我
  • 有人用CrossKylix进行真正的跨平台开发吗?

    新版本克罗斯凯利克斯 http crosskylix untergrund net 两周前更新过 即使 Kylix 已经停产很久了 但它似乎仍然被一些 Delphi 开发人员使用 有人在 Windows 和 Linux 的跨平台开发中成功使
  • Delphi 返回 TList 时出错

    我做了一个非常简单的应用程序 但我有一个我真的无法理解的问题 看一下这个基本代码 unit Unit1 interface uses Winapi Windows Winapi Messages System SysUtils System
  • 为什么 {$ifopt FINITEFLOAT ON} 无法编译?

    我有这样的构造 ifopt FINITEFLOAT ON message FINITEFLOAT option ON else message FINITEFLOAT option OFF endif 在我的源代码中 它不会编译 这一定是一
  • Mac 上的 Delphi - 可能吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我负责一个 Delphi Win32 项目管理应用程序 我刚刚完成了向 Delphi 2009 的迁移
  • 在 Delphi 中编程延迟的最佳方法是什么?

    我正在开发的 Delphi 应用程序必须延迟一秒 有时甚至两秒 我想使用最佳实践来对此延迟进行编程 在阅读 stackoverflow 上有关 Delphi Sleep 方法的条目时 我发现了以下两条评论 我遵循这样的格言 如果你觉得需要使
  • 如何调试仅在应用程序关闭时发生的崩溃? (德尔福)

    因此 经过最近的一些更改 我们发现我们最古老的应用程序之一有时会在关闭时崩溃 这会以 运行时错误 216 消息的形式或来自 Windows 错误报告的消息的形式表明应用程序已停止工作 该应用程序已经发出OutputDebugString 每

随机推荐

  • 为什么新的 Java 8 Date Time API 没有纳秒精度? [复制]

    这个问题在这里已经有答案了 Java 8 中新的 Date Time API 的功能之一应该是纳秒精度 但是 当我像这样将当前日期时间打印到控制台时 DateTimeFormatter formatter DateTimeFormatter
  • 如何显示前 n 个元素,然后展开以显示剩余元素?

    我有一个元素列表 假设有 10 个 并且在页面加载时只显示前 4 个 点击more将展开列表并显示剩余元素 我的 html 代码如下所示 div div class listContainer ul li 1 li li 2 li li n
  • SQL Server 2012

    有没有办法导出 SQL Server 2012 的 DDL 先前的此类性质问题已于 2009 年 12 月回答过 但似乎并不适用 之前的回答 对于 SQL Server 在 SQL Server Management Studio 中 右键
  • inno setup 需要有关开始菜单下图标组的帮助

    我正在使用 Inno 设置 我需要将我的程序图标放在我的公司组下的开始菜单中 我的 define MyAppPublisher publisher MyAppName game name 一些示例代码 Icons Name group My
  • 读取 .PNG 时,如何识别颜色簇并重写图像文件,以便每个簇都有唯一的 RGB 代码?

    继续这个问题 如何重写一个列表列表 以使值的 孤岛 彼此唯一 简介 您将如何解析图像 例如 通过这种方式 您可以识别不同像素的几个簇并重写文件 以便每个簇都有唯一的颜色 例如 以下是我如何在一些来源的帮助下尝试实现它 包括 stackove
  • 如何将图像加载到 Xcode 9 Playground 中?

    我花了几个小时试图简单地访问我的 Swift Playground 中的图像数据 我遵循了许多建议在目录中添加资源文件夹作为同级目录的教程 您的游乐场位于其中 或者将图像拖到游乐场导航器中的资源文件夹中 没有任何效果 我需要做什么才能在游乐
  • 为什么伪元素上的滤镜渐变在 IE8 中不起作用?

    I want to create buttons like these 在现代浏览器中 效果是使用插入框阴影和滤镜创建的 对于 IE8 选择伪元素 对于 IE7 我使用包含在条件注释中的特殊标签 Demo http jsfiddle net
  • 转义 T-SQL“模式”表达式字符类中的 ] 和 ^ 字符

    我正在尝试模仿 OracleRTRIM expression characters 在 MsSql Server 2008 R2 中使用以下查询 REVERSE SUBSTRING REVERSE field PATINDEX chars
  • 如何在Python中找到pow(a,b,c)的逆序?

    pow a b c python中的运算符返回 a b c 如果我的价值观是b c 以及该操作的结果 res pow a b c 我怎样才能找到值a Despite the statements in the comments this i
  • 如何使用jquery查找并检查树中的所有动态子复选框?

    我已动态地将复选框添加到所有元素 并成功添加了选择所有复选框的功能 但无法选择树结构中的父子复选框 这意味着如果我选择 亚洲 它应该选择所有 东亚 和 南亚 如果我选择东亚 它应该选择所有国家 反之亦然 var json Asia regi
  • 使用 Google Cloud Storage 从 Firebase 存储中删除文件夹

    我想删除文件夹 test 及其中的所有内容 我可以使用以下代码在终端成功删除 FirebaseStorage 中的文件夹及其所有内容 子文件夹 gsutil rm r gs bucketname appspot com test 然而 当我
  • 表格和屏幕阅读器

    我似乎无法让屏幕阅读器阅读简单的表格 我有以下 HTML table alt Account Information tr th Account Number th td 1111 1111 1111 td td nbsp nbsp td
  • 如何删除div中某个div之后的所有元素

    所以我有一个在其底部绘制动态元素的 div 我想隐藏这些元素 无论它们的 ID 使用 javaScript jQuery 是什么 基本上我的 HTML 看起来像这样 div class right panel div class info
  • Ajax:将整数数组发布到 Django

    我在用着数据表 我想让用户选择多行并删除它们 到目前为止 我已经让它工作了 所以它使用下面的代码删除了选择中的第一行 阿贾克斯代码 Add a click handler for the delete row delete click fu
  • Eclipse 中 Tomcat 上 Jersey 的基本完整配置

    我是 Jersey 的新手 正在尝试使用 Tomcat 和 eclipse 建立一个基本的 web 应用程序 我看过许多教程和示例 但它们彼此不同 或者省略了部分过程 例如使用 Spring 使用 web xml 文件 在 Tomcat 上
  • 如何使用 jQuery ajax 获取另一个页面上的 div 的 html?

    我正在使用 jQuery 的 ajax 代码来加载新页面 但希望他只获取 div 的 html 我的代码 HTML div div Script ajax url href type GET success function data co
  • 如何在 Android 中动态切换 XML 样式?

    长话短说 我有一个应用程序 我在其中直接将样式属性应用于活动和片段的 XML 文件 现在我将其重构为styles xml文件 我几乎不敢直接修改主题本身 因为我之前已经尝试过类似的东西 继承变得混乱 所以 我的作品里有好几种这样的风格sty
  • R 子集的回归

    我想对不同国家 即我的数据的子集 运行相同的回归 我确实弄清楚了如何在 R 中执行此操作 但是在 Stata 中更轻松地完成相同的操作之后 我想知道 R 中是否有更好的方法 在 Stata 中你会做这样的事情 foreach country
  • PDF 中的透明图像

    This PDF由多个源代码片段组成 其中五个是包含 Alpha 通道的 PNG 一种是没有 Alpha 通道的 PNG 最后一张是带有透明效果的 Photoshop PDF 这些部件是使用 ABCpdf 9 1 组装的 在 Acrobat
  • 在 CLX TEdit 的 KeyPress 事件中拦截 TAB 键

    我有一个 TEdit VisualCLX 组件 我想覆盖 onKeyPress 事件中 TAB 键的行为 但是如果我尝试拦截 KeyPress 事件中的 TAB 键 它将不起作用 因为当在 TEdit 上按下 Tab 键 如何拦截 TEdi