11

新しい Delphi VCL アプリケーションから始めて、メニューを uses 句に追加し、フォームにラベルをドロップして、フォームの OnShortCut イベントを割り当てます。

procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
  Label1.Caption := ShortCutToText(ShortCut(Msg.CharCode, KeyDataToShiftState(Msg.KeyData)));
end;

ShiftXP では、これは++を含む、私が試したすべてのショートカット キーの組み合わせで正しく機能しCtrlます0。Vista および Windows 7 では、テスト アプリケーションはShift+ Ctrl+1からShift+ Ctrl+を表示しますが、 + +は表示し9ません。+ 、+ 、さらには+ + +などの他の組み合わせも問題なく表示されます。ShiftCtrl0Shift0Ctrl0ShiftCtrlAlt0

デバッガーでアプリケーションを実行すると、キーを押しながらShiftとキーの両方を押したままにすると、Msg.CharCode = Ord('0') で OnShortCut イベントが発生しないことがわかりました。Ctrl0

Delphi IDE は、Vista で同じ問題を抱えています。 Ctrl+ Shift+1はブックマーク 1 を設定しますが、Ctrl++はブックマークShift00を設定しません。

VMware の Windows Vista および 7 のバージン インストールで Delphi 2007 および 2010 を使用してこれをテストしたので、キーをトラップするサード パーティ ソフトウェアはありません。問題が Delphi にあるのか、Vista 自体にあるのかを判断するために、他の開発ツールを試したことはありません。

4

3 に答える 3

16

Shift+ Ctrl+0は、Vista で入力方式エディター (IME) に事前に割り当てられています。

http://support.microsoft.com/kb/967893

これで問題は解決しますが、IME (主にアジア バージョン) のユーザーに影響を与えるため、このショートカットを使用しないことを検討する必要があります。

于 2009-09-23T09:01:14.180 に答える
3

あなたがこれを最初に尋ねたのではないようです、私はハウツーオタクフォーラムでこのスレッドを見つけました。

次に、このMSナレッジベースの記事を見つけました。

「入力方式エディターのキーボードショートカット(CTRL+ SHIFT+ 0)は、Vistaの入力言語を切り替えます」

言語を切り替えるために使用されます。これをオフにする回避策があります。試したところ、動作しました。アプリケーションはCtrl++を認識しShiftます0

于 2009-09-23T08:59:21.327 に答える
3

Ctrl古い学校+ K Ctrl+を試して、0ブックマーク 0 を設定します。

于 2009-09-23T11:35:00.733 に答える