FireMonkey-Eingabehilfen-Package
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
Inhaltsverzeichnis
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:
- MSAA:
- macOS-Eingabehilfen:
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;