4

VCL (Delphi 2010) では、この関数を使用して、コントロール キーが押されているかどうかを確認しました。

function IsControlKeyPressed: Boolean;
begin
  Result := GetKeyState(VK_CONTROL) < 0;
end;

GetKeyState は、プロジェクトに含めたくない Windows ライブラリの関数です。

firemonkey アプリケーションの XE3 でコントロール キーまたはシフト キーが押されているかどうかを確認するにはどうすればよいですか?

4

4 に答える 4

7

それが他の誰かに役立つなら、これは私のユニットです:

unit uUtils;

interface

uses
{$IFDEF MSWINDOWS}
  Winapi.Windows;
{$ELSE}
  Macapi.AppKit;
{$ENDIF}
function IsControlKeyPressed: Boolean;
function IsShiftKeyPressed: Boolean;

implementation

function IsControlKeyPressed: Boolean;
begin
{$IFDEF MSWINDOWS}
  Result := GetKeyState(VK_CONTROL) < 0;
{$ELSE}
  Result := NSControlKeyMask and TNSEvent.OCClass.modifierFlags = NSControlKeyMask;
{$ENDIF}
end;

function IsShiftKeyPressed: Boolean;
begin
{$IFDEF MSWINDOWS}
  Result := GetKeyState(VK_SHIFT) < 0;
{$ELSE}
  Result := NSShiftKeyMask and TNSEvent.OCClass.modifierFlags = NSShiftKeyMask;
{$ENDIF}
end;

end.
于 2012-11-22T12:00:22.810 に答える
2

正しく動作させるために、ユニットuUtilsに以下を追加することを忘れないでください。

System.UITypesMacapi.CoreGraphics

uses
System.UITypes,
{$IFDEF MSWINDOWS}
  Winapi.Windows;
{$ELSE}
  Macapi.AppKit, Macapi.CoreGraphics;
{$ENDIF}
于 2014-11-27T05:41:15.523 に答える