- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为了解决我们系统中的一些问题,我需要在框架(TFrame)中实现OnKeyDown
和OnKeyPress
事件。目前做了一个姑息解决方案,但它非常丑陋并且存在任何问题。
该过程大致如下:
1) 我在继承自 TFrame 的基类中创建了事件 OnKeyDown
和 OnKeyPress
。
2) 在基于TForm的标准表单中,实现了拦截执行键的控件。因此,此过程首先执行框架上的关键事件,然后执行表单上的关键事件。
我必须这样做,因为我希望 OnKeyDown 事件在框架中之前执行,在窗体上之后执行。实现工作正常,但我会考虑更好的代码。
谁能提出更好的解决方案?有没有更优雅的方法来解决这个问题?
最佳答案
试试这个。不要创建 TFrame 后代,而是在框架中创建 KeyDown 和 KeyPress 过程,例如
procedure TFrame2.KeyDown(var Key: Word; Shift: TShiftState);
begin
Memo1.Lines.Add('KeyDown: '+IntToStr(Key));
end;
procedure TFrame2.KeyPress(var Key: Char);
begin
Memo1.Lines.Add('KeyPress: '+IntToStr(ord(Key)));
end;
然后从表单的 OnKeyDown 和 OnKeyPress 中调用它们,例如
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Frame21.KeyDown(Key,Shift);
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
Frame21.KeyPress(Key);
end;
关于delphi - 如何在TFrame中实现OnKeyDown事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19259547/
德尔福2010 我在主窗体上使用 OnFormKeyDown 事件,并且基本上在对话框上使用相同的事件 //主窗体 procedure TfrmMain.FormKeyDown(Sender: TOb
我在网上看到的大部分代码都使用了document.onkeydown,但是MDN只列出了window.onkeydown . This comment还建议使用 window.onkeydown。使用
我在线性布局中放置了一个 ListView ,我想覆盖 ListView 中的 onkeydown() 方法,我不控制焦点,只是改变onkeydown()中的一些变量,我希望系统像我没有覆盖onkey
我想知道如何使用事件监听器在 javscript 中正确使用 onkeydown 和 onkeyup 事件。我希望在您只需在网站中而不是在文本字段中按下时监听该事件。 我不确切地知道脚本会是什么样子,
我在从数字键盘输入数字值时遇到问题。我的脚本仅接受“qwerty”键上方数字键的数字。我想要的是用户还可以从数字键盘输入数字。以下是 HTML: 但是我尝试在 onkeypress 和
我不知道这个问题是否已经在某个地方得到了回答,但就是这样。 为什么会这样? el.onkeydown = function(e) { if(!((e.keyCode > 95 && e.keyCo
我不知道这个问题是否已经在某个地方得到了回答,但就是这样。 为什么会这样? el.onkeydown = function(e) { if(!((e.keyCode > 95 && e.keyCo
我在 if 语句中使用 var "str"时遇到问题。我知道这是一个范围问题,但我不知道如何解决它。我已经失败了好几次了。 我的目标是在 if 语句中使用“str”的值来显示或不显示警报。限制是我只能
当用户在 Android 中按下后退按钮时,我会出现一个自定义对话框,询问“您确定吗”。问题是,如果我实现 onKeyDown 方法,音量硬按钮就不起作用,并且音量不会升高或降低(在整个 Activi
我正在编写代码,以在按下音量调高/调低键时更改 TextView,以更新系统音量%设置的 TextView。我现在有这段代码,该代码可以工作一次,但它会覆盖调高/调低的功能,是有没有办法重写它或排除它
使用Material-UI Table我有这个: console.log(event)}> ... 当我用鼠标单击表格,然后开始单击向上和向下箭头键时,控制台上没有任何记录。我
设置左右箭头键图像导航脚本时遇到问题 document.onkeydown = function(event) { var e = event || wind
在我的旧项目中,我在 winform TextBox 中使用了 OnKeyPress 的覆盖来替换一些输入键 if(e.KeyChar == 'a') e.KeyChar = 'b'; // j
function Test(event) { console.log(event.key + ' ' + event.which + ' ' + event.code); } 结果: undef
这是我的代码 document.onkeydown = function (a) { if (a.which == 13) { alert("Not Anymore");
我正在处理一个表单并尝试创建一个执行以下操作的 onkeydown 函数: 仅在按下 tab 键 时触发(正常工作) 插入一个新元素(input)(一切正常) 然后插入的 input 调用相同的 on
我有一个无法识别第一次按键的 onKeyDown 事件(甚至无法进入该事件,我已经通过生成“toast”输出进行了测试)。在第二次按键和之后,它完美地工作。如果我点击屏幕上的另一个元素并再次尝试按键,
在我的应用程序中,我尝试覆盖 onKeyDown 方法并调用自定义对话框,但是当在设备上运行时,它没有显示该自定义对话框。我使用了调试器并看到调用了 onKeyDown 方法,但没有出现对话框并且应用
这个问题在这里已经有了答案: Override home and back button is case a boolean is true (6 个答案) 关闭 8 年前。 我覆盖了 Activi
public boolean onKeyDown(int keyCode, KeyEvent event) { } 此方法中的代码仅在选定的 EditText 具有退格键条目时触发。我需要它被任何类型
我是一名优秀的程序员,十分优秀!