FireMonkey-Eingabehilfen-Package

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu FireMonkey


Die Desktop-Eingabehilfenunterstützung von FireMonkey ist für Delphi Athens für Win32-, Win64- und macOS-Anwendungen verfügbar. In RAD Studio 11 ist das FireMonkey-Eingabehilfen-Package bereits enthalten, für RAD Studio 10.4.x oder frühere Versionen steht das Eingabehilfen-Package zum direkten Herunterladen über den GetIt-Package-Manager zur Verfügung.

Das FireMonkey-Eingabehilfen-Package unterstützt:

  • Unter Windows die JAWS-Sprachausgabe von Freedom Scientific
  • Die VoiceOver-Sprachausgabe von Apple unter macOS

Technologie

Die FireMonkey-Eingabehilfeunterstützung basiert unter Windows auf dem Microsoft MSAA-Interface (Microsoft Active Accessibility-Architektur) und für macOS auf dem macOS-Eingabehilfeprotokoll.

Informationen zu den APIs finden Sie unter:

Die Windows MSAA-Implementierung wurde mit Freedom Scientific JAWS und Microsoft Windows Narrator getestet. Unter macOS wurde der Test mit den Apple VoiceOver-Anwendungen durchgeführt.

Architektur

Für die Implementierung der Betriebssystem-Eingabehilfen-Interfaces wurde eine neue Formularklasse von der FireMonkey-Standardklasse TForm abgeleitet. Diese Formularklasse, TAccForm, verfügt über eine eigene Implementierung für die Windows-Plattform, die das Windows MSAA-Interface implementiert und alle Interaktionen von MSAA und FireMonkey-Steuerelementen auf dem Formular behandelt. Für macOS ist eine entsprechende Implementierung vorhanden.

Diese TAccForm-Klasse enthält eine integrierte Behandlung für die meisten allgemeinen und Standardsteuerelemente von FireMonkey. Das bedeutet, dass Sie beim Ableiten von Formularen von TAccForm anstatt von TForm keine weiteren Schritte zum Aktivieren der Eingabehilfen in FireMonkey-Anwendungen durchführen müssen.

Erste Schritte

Um ein geräteübergreifendes Formular für Eingabehilfen zu aktivieren, müssen Sie zuerst die erforderlichen Units hinzufügen, die diese Eingabehilfen implementieren. Die Eingabehilfen befinden sich in drei Units:

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

Zugehörige "uses"-Liste:

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}
  ;

Leiten Sie als Nächstes das Formular von TAccForm anstatt von TForm ab:

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

var
  Form1: TForm1;

Unterstützte Steuerelemente

Die Implementierung der FireMonkey-Eingabehilfen verfügt über eine integrierte Unterstützung für die folgenden FireMonkey-Standardsteuerelemente:

FireMonkey-Steuerelement   Eingabehilfen-Klasse  

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

Wenn Sie diese Steuerelemente in Ihren FireMonkey-Anwendungen verwenden, müssen Sie keine weiteren Schritte ausführen. TAccForm ermöglicht, dass die verwendete Sprachausgabe-Software den Text oder den Status der Steuerelemente ordnungsgemäß liest. Alle Steuerelemente, die von diesen FireMonkey-Standardsteuerelementen abgeleitet sind, erben automatisch die Eingabehilfenunterstützung.

Hinzufügen der Eingabehilfenunterstützung zu benutzerdefinierten FireMonkey-Steuerelementen

Um die Eingabehilfenunterstützung zu einem benutzerdefinierten Steuerelement hinzuzufügen, fügen Sie Ihrem Steuerelement das Interface IFMXAccessibility hinzu, und implementieren Sie es.

IFMXAccessibility ist folgendermaßen definiert:

 // 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;


Dieses Interface besteht aus zwei einfachen Methoden:

  • GetRole: Gibt die Rolle des benutzerdefinierten Steuerelements zurück
  • GetControlText: Gibt den Text zurück, den die Sprachausgabe vorlesen soll, wenn das Steuerelement den Fokus hat

Der Typ TFMXRole ist wie folgt definiert:

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

Für ein benutzerdefiniertes Eingabesteuerelement (das nicht von einem FireMonkey-Standardeingabesteuerelement abgeleitet ist, das bereits über die Eingabehilfenunterstützung verfügt) kann dies folgendermaßen implementiert werden:

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;

Siehe auch