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