gpt4 book ai didi

delphi - VCL-Styles菜单热键不一致

转载 作者:行者123 更新时间:2023-12-03 15:10:31 27 4
gpt4 key购买 nike

我注意到,当启用 VCL-Styles 时,即使没有按下 Alt 键,也会使用热键选择菜单中的项目。

这会干扰我的用户界面的其余部分,并且我发现样式库改变热键的行为非常奇怪。

我可以以某种方式消除这种不一致吗?

正常:按“A”不会激活主菜单(Alt + A 会激活)。

Normal: Pressing "A" does not activate the main menu (Alt + A does).

风格:按“A”激活主菜单。 注意:没有 Alt 键

Styled: Pressing "A" activates the main menu.

我的测试项目是here万一有人想尝试一下。

最佳答案

此问题似乎与处理消息 CM_DIALOGCHAR 的 TFormStyleHook.CMDialogChar 方法有关,原始方法不检查是否按下了 Alt 键。

我编写了这个样式钩子(Hook),它解决了这个问题。

type
TFormStyleHookFix= class (TFormStyleHook)
procedure CMDialogChar(var Message: TWMKey); message CM_DIALOGCHAR;
end;

TFormStyleHookHelper= class helper for TFormStyleHook
private
function CheckHotKeyItem(ACharCode: Word): Boolean;
end;



{ TFormStyleHookFix }

procedure TFormStyleHookFix.CMDialogChar(var Message: TWMKey);
begin
if ((Message.KeyData and $20000000) <> 0 ) and (CheckHotKeyItem(Message.CharCode)) then
begin
Message.Result := 1;
Handled := True;
end
end;

{ TFormStyleHookHelper }
function TFormStyleHookHelper.CheckHotKeyItem(ACharCode: Word): Boolean;
begin
Result:=False;
if Self.FMainMenuBarHook<>nil then
Result:=Self.FMainMenuBarHook.CheckHotKeyItem(ACharCode);
end;

这样使用

 TStyleManager.Engine.RegisterStyleHook(TForm9, TFormStyleHookFix);

记得将此情况报告给Quality Central页码。

关于delphi - VCL-Styles菜单热键不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9978106/

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