TMainMenu 類 五 快捷鍵的記錄方式

2021-09-05 18:31:47 字數 1165 閱讀 9097

我們從 form 的原始碼中看到, 指定的快捷鍵是乙個數字, 譬如 ctrl+a, 對應著數字: 16449

其實這是乙個 word 型別的數字; 快捷鍵的引數是 tshortcut 型別的, 它定義在 classes 單元的第92行(delphi 2007):

tshortcut = low(word)..high(word);

menus 單元有兩個函式: texttoshortcut、shortcuttotext, 可以互相轉換它們.

var

w: word;

s: string;

begin

w := texttoshortcut('ctrl+a');

showmessage(inttostr(w));

s := shortcuttotext(16449);

showmessage(s);

end;

它是根據什麼原理用乙個數字記下了乙個字串的呢? 我沒有深究, 只是根據已知資料猜了一下.

word 是雙位元組, 有乙個高位元組、乙個低位元組.

高位元組用來儲存輔助鍵, 就是 shift、ctrl、alt 和它們的組合; 低位元組儲存單鍵對應的鍵值.

對組合鍵的鍵值, delphi 規定如下:

輔助鍵值shift

$20ctrl

$40shift+ctrl

$60alt

$80shift+alt

$a0ctrl+alt

$c0shift+ctrl+alt 

$e0 

譬如: 16449, 用十六進製制表示是: $4041; 高位元組 $40 表示 ctrl, 低位元組 $41 表示字母 a.

既然如此, 不用它的轉換函式, 我們自己也可以轉換了:

var

w: word;

h,l: byte;

begin

w := 16449;

h := hi(w);

l := lo(w);

showmessage(inttohex(h,2));

showmessage(inttohex(l,2));

end;

不過, 我在整理

所有可用的快捷鍵列表時, 碰見了太多重複值(就是乙個快捷鍵對應著好多個數值), 還不知是什麼原理.

VS 類快捷鍵

生成類的建構函式 輸入 ctrl,按兩下 tab 鍵 快速新增屬性 輸入prop,按2下tab鍵 新增摺疊 輸入reg,按2下tab鍵,快速輸入 region 輸入class,按下2次tab建,快速輸入類定義 定義乙個類,滑鼠放到ihttphandler上,點 顯示可能修補程式 實現介面就自動生成了...

Eclipse快捷鍵 文字編輯類快捷鍵

b 文字編輯類快捷鍵 1.ctrl 左箭頭 上乙個詞語 2.ctrl 上箭頭 向上滾動一行 3.ctrl 右箭頭 下乙個詞語 4.ctrl 下箭頭 向下滾動一行 5.ctrl backspace 刪除上乙個詞語 6.ctrl delete 刪除下乙個詞語 7.ctrl shift delete 刪除...

mac快捷鍵 xcode快捷鍵

快捷鍵圖示 com w關閉當前頁面 ctrl com com tab 切換程式 com option確定進入程式 option com 0開啟右邊使用工具欄 command option esc 開啟強制退出視窗 com option esc開啟強制退出 com 0 開啟導航器 com shift ...