FireMonkey アクセシビリティ(ユーザー補助)パッケージ

提供: Appmethod Topics
移動先: 案内検索

FireMonkey アプリケーション プラットフォーム への移動


Object Pascal 1.17(Win32 版、Win64 版、Mac OS X 版)のアプリケーションでは FireMonkey デスクトップ アクセシビリティ(ユーザー補助)サポートを利用できます。FireMonkey アクセシビリティ パッケージは次のサイトからダウンロードできます:

http://appmethod.com(まずご自分のユーザー アカウントにログインする必要があります)

FireMonkey アクセシビリティ パッケージでは以下をサポートしています。

  • JAWS スクリーン リーダー(Freedom Scientific 社製、Windows 版)
  • VoiceOver スクリーン リーダー(Apple 社製、Mac OS X 版)

使用技術

FireMonkey アクセシビリティ サポートは、Windows では Microsoft の MSAA インターフェイス(Microsoft Active Accessibility アーキテクチャ)に基づいており、Mac OS X の場合は OS X アクセシビリティ プロトコルに基づいています。

これらの API については以下を参照してください。

Windows MSAA に基づく実装は Freedom Scientific 社の JAWS と Microsoft の Windows ナレーターでテスト済みです。Mac OS X では、Apple VoiceOver アプリケーションでテスト済みです。

アーキテクチャ

オペレーティング システムのアクセシビリティ インターフェイスを実装するため、FireMonkey のデフォルトの TForm から派生した新しいフォーム クラスが用意されています。このフォーム クラス TAccForm には、Windows プラットフォームをターゲットとする独立した実装があります。これは、Windows MSAA インターフェイスを実装し、MSAA とフォーム上の FireMonkey コントロールとのやり取りをすべて処理します。また、これに対応する OS X 向けの実装もあります。

この TAccForm クラスは、もっとも共通、標準的な FireMonkey コントロールに対する、組み込み処理を保有しています。これはつまり、FireMonkey アプリケーションにおいて、アクセサビリティを有効にするには、TForm の代わりに TAccForm からフォームを派生させること以外、余分な手順はいらない、ということになります。

ファースト ステップ

マルチデバイス フォームでアクセサビリティを有効にするには、まずは、これを実装している必要なユニットを追加します。アクセサビリティは 3 つのユニットによって実現されています:

  • FMX.ScreenReader
  • FMX.ScreenReader.Mac
  • FMX.ScreenReader.Win

uses リストは次のような形になります:

uses
  System.SysUtils, System.Types, System.UITypes, System.Rtti,
  System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms,
  FMX.Dialogs, FMX.StdCtrls, FMX.ScreenReader
  {$IFDEF MACOS}
  , FMX.ScreenReader.Mac
  {$ELSE}
  , FMX.ScreenReader.Win
  {$ENDIF}
  ;

次に、フォームを TForm ではなく TAccForm から派生するようにします:

type
  TForm1 = class(TAccForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

サポートされているコントロール

FireMonkey のアクセシビリティ機能の実装では、以下の表に示す標準の FireMonkey コントロールを組み込みサポートしています。

FireMonkey コントロール   アクセシビリティ クラス  

TButton

PUSHBUTTON

TSpeedButton

PUSHBUTTON

TTracker

SLIDER

TEdit

TEXT

TListBox

LIST

TComboBox

COMBOBOX

TComboEdit

COMBOBOX

TSpinBox

SPINBUTTON

TLabel

STATICTEXT

TCheckBox

CHECKBUTTON

TRadioButton

RADIOBUTTON

TMainMenu

MENU

TMemo

TEXT

TTreeView

OUTLINE ITEM

TCustomGrid

CELL

FireMonkey アプリケーションでこれらのコントロールのどれを使用する場合でも、他に必要な作業はありません。TAccForm により、使用するスクリーン リーダー ソフトウェアがコントロールのテキストや状態を適切に読み取ることができるようになります。 また、これら標準の FireMonkey コントロールから派生するあらゆるコントロールもアクセシビリティ サポートを自動的に継承する点にも注意してください。

FireMonkey カスタム コントロールへのアクセシビリティ サポートの追加

アクセシビリティのサポートをカスタム コントロールに追加するには、コントロールにインターフェイス IFMXAccessibility を追加し、それを実装します。

IFMXAccessibility は次のように定義されています。

 // Interface for custom controls to add accessibility support
 IFMXAccessibility = interface
 ['{49AF90E5-341A-4869-9D3E-F659670FB4D8}']
   // Return the text to read by the accessibility interface
   function GetControlText: string;
   // Returns the accesibility role of the custom control
   function GetRole: TFMXRole;
 end;


このインターフェイスは次の 2 つのシンプルなメソッドで構成されています。

  • GetRole: カスタム コントロールのロールを返します。
  • GetControlText: コントロールにフォーカスがあるときにスクリーン リーダーが読み上げるテキストを返します。

TFMXRole 型は次のように定義されています。

 TFMXRole = (rStaticText, rCell, rText, rButton, rCheckBox, rRadioButton, rGrid, rList, rSlider, rComboBox, rTabGroup);

カスタム編集コントロール(アクセサビリティ サポートをすでに備えている標準 FireMonkey 編集コントロールから派生していないもの)の場合、これは次のように実装されます:

type

  TMyOwnFireMonkeyEdit = class(TControl, IFMXAccessibility)
  protected
    function GetControlText: string;
    function GetRole: TFMXRole;
  end;



implementation

{ TMyOwnFireMonkeyEdit }

function TMyOwnFireMonkeyEdit.GetControlText: string;
begin
  Result := GetMyControlText,
end;

function TMyOwnFireMonkeyEdit.GetRole: TFMXRole;
begin
  Result := rText;
end;

関連項目