gpt4 book ai didi

delphi - 如何在TFrame中实现OnKeyDown事件

转载 作者:行者123 更新时间:2023-12-01 18:58:23 27 4
gpt4 key购买 nike

为了解决我们系统中的一些问题,我需要在框架(TFrame)中实现OnKeyDownOnKeyPress事件。目前做了一个姑息解决方案,但它非常丑陋并且存在任何问题。

该过程大致如下:

1) 我在继承自 TFrame 的基类中创建了事件 OnKeyDownOnKeyPress

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/

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