gpt4 book ai didi

delphi - 关注 TImage 上的关键事件?

转载 作者:行者123 更新时间:2023-12-02 05:11:26 28 4
gpt4 key购买 nike

我正在构建一个编辑器,它使用 TImage 来显示图片,并具有鼠标事件来能够在图像上绘制、移动框和调整框大小。这一切都很完美。现在我正在尝试实现使用键盘上的箭头移动选定框的功能,但是A)TImage没有获得任何焦点,B)TImage没有任何按键事件(因为它无法获得焦点)。我想我可以作弊并打开表单的 KeyPreview 属性并在那里捕获它们,但是此表单上还有许多其他控件,我需要确保用户打算使用图像。例如,如果用户将焦点放在 TEdit 控件上,则箭头键将仅影响此备忘录,而不会修改图像。

那么有没有办法在 TImage 中放置或伪造某种焦点来识别关键事件?

最佳答案

只有继承自 TWinControl 的控件才能接收键盘焦点。
TImage 源自 TGraphicControl,无法接收键盘事件。

您可以将图像放在位于另一个控件顶部的面板顶部,例如如果选择了图像,则编辑并给予该焦点。
然后只需使用不可见编辑的 OnKeyPress 事件即可。
如果您不希望将焦点更改为另一个控件,请确保禁止使用 tab 键。

procedure TForm8.Image1Click(Sender: TObject);
begin
Edit1.SetFocus;
end;

procedure TForm8.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #9 then Key = #0; //disable tab key.
case key of
//do stuff here
end; {case}
end;

关于delphi - 关注 TImage 上的关键事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8467860/

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