gpt4 book ai didi

delphi - "correct"在Delphi中定义快捷方式的方法是什么?

转载 作者:行者123 更新时间:2023-12-03 14:42:48 27 4
gpt4 key购买 nike

关于如何在 Delphi 程序中定义 ShortCut 的示例有很多,但是它们归结为两种不同的方式:

  1. 将任意 scCtrl、scShift 和 scAlt 常量添加到键的 Ord()
  2. 使用 Menus.ShortCut 函数

例如

Action.ShortCut := scCtrl + scShift + Ord('K');
// vs
Action.ShortCut := Menus.ShortCut(Word('K'), [ssCtrl, ssShift]);

这两种方式中的哪一种更可取?如果是,是哪一个以及为什么?

最佳答案

代码几乎相同,但 ShortCut 有一些额外的检查:

function ShortCut(Key: Word; Shift: TShiftState): TShortCut;
begin
Result := 0;
if HiByte(Key) <> 0 then Exit; // if Key is national character then it can't be used as shortcut
Result := Key;
if ssShift in Shift then Inc(Result, scShift); // this is identical to "+" scShift
if ssCtrl in Shift then Inc(Result, scCtrl);
if ssAlt in Shift then Inc(Result, scAlt);
end;

因为RegisterHotKey函数使用Virtual key codes (其值从 $00 到 $FE)这个额外的检查很重要。

请注意,而不是 Ord文档中,真正的 Ord 函数返回smallint(带符号的Word),因此使用国家字符可以更改包含在 ShortCut 值的高字节中的修饰符。

所以,更好的是使用ShortCut功能。

关于delphi - "correct"在Delphi中定义快捷方式的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36238614/

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