FireMonkey-Eingabehilfen-Package

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu FireMonkey


Die Desktop-Eingabehilfenunterstützung von FireMonkey ist für Delphi Sydney-Anwendungen für Win32 und Win64 sowie für macOS-Anwendungen verfügbar. Das FireMonkey-Eingabehilfen-Package kann von der Website für registrierte Benutzer: http://cc.embarcadero.com/item/29850 (EN) heruntergeladen werden.


Das FireMonkey-Eingabehilfen-Package unterstützt:

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

Technologie

Die FireMonkey-Eingabehilfenunterstützung basiert unter Windows auf der Microsoft MSAA-Schnittstelle (Microsoft Active Accessibility-Architektur) und für macOS auf dem macOS-Eingabehilfenprotokoll.

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-Eingabehilfenschnittstellen wurde eine neue Formularklasse von der FireMonkey-Standardklasse TForm abgeleitet. Diese Formularklasse, TAccForm, verfügt über eine eigene Implementierung für das Windows-Plattformziel, die die Windows MSAA-Schnittstelle 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-Deklarationen }
  public
    { Public-Deklarationen }
  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