我有一個vclfix project使Delphi應用程序更多的Windows原生外觀和感覺。我的一個修復方法是更改菜單項的特定快捷方式文本。德爾福:如何檢測鍵名w/wo Shift鍵保持
具體而言,如果我將Ctrl++
分配給菜單項「放大」,修復將會將快捷文本更改爲Ctrl +
。
function ShortCutToTextOverride(ShortCut: TShortCut): string;
(**
* This function replaces the following shortcuts
* "Ctrl++" -> "Ctrl +" | "Ctrl+-" -> "Ctrl -"
* "Shift++" -> "Shift +" | "Shift+-" -> "Shift -"
* "Alt++" -> "Alt +" | "Alt+-" -> "Alt -"
*)
begin
Result := OrigShortCutToText(ShortCut);
case LoByte(Word(ShortCut)) of
VK_OEM_PLUS, VK_ADD:
Result := ReplaceStr(Result, '++', ' +');
VK_OEM_MINUS, VK_SUBTRACT:
Result := ReplaceStr(Result, '+-', ' -');
end;
end;
現在我面臨的一個問題:當我給你Ctrl++
到菜單項,它看起來很棒。但不知何故,該快捷方式可能會自動更改爲Ctrl+=
。也許一些德爾福的內部例程做到這一點,因爲=
和+
在英文鍵盤佈局中共享相同的密鑰。
這裏的問題是如何知道的+
相反的鍵名,無論是鍵盤佈局?
我很感興趣 - 什麼做一些VCL控件不符合Windows的感覺?其中絕大多數*都是原生Windows控件。 –
@DavidM令我困擾的主要區別是Delphi應用程序以自己的風格呈現工具提示。雖然它非常接近本地,但它們是不同的。這是我的博客http://stanleyxu2005.blogspot.com/2008/01/native-hint-window-class.html。此外,圖像的菜單項也看起來不同。我沒有時間以適當的方式修補它。 – stanleyxu2005