Package d'accessibilité FireMonkey
Remonter à FireMonkey
La prise en charge de l'accessibilité dans FireMonkey est disponible pour les applications Delphi Sydney pour Win32, Win64 et macOS. Le package d'accessibilité FireMonkey est disponible en téléchargement sur le site des utilisateurs enregistrés :
http://cc.embarcadero.com/item/29850
Le package d'accessibilité FireMonkey supporte :
- Le lecteur d'écran JAWS de Freedom Scientific sur Windows
- Le lecteur d'écran VoiceOver d'Apple sur macOS
Sommaire
Technologie
La prise en charge de l'accessibilité dans FireMonkey est basée sur l'interface Microsoft MSAA sous Windows (architecture Microsoft Active Accessibility). Sous macOS, elle est basée sur le protocole d'accessibilité macOS.
Les informations sur les API sont disponibles à l'adresse :
- MSAA :
- Accessibilité macOS :
L'implémentation MSAA Windows a été testée avec Freedom Scientific JAWS et Microsoft Windows Narrator. Sous macOS, elle a été testée sur les applications VoiceOver Apple.
Architecture
Pour implémenter les interfaces d'accessibilité du système d'exploitation, une nouvelle classe de fiche est dérivée de la classe TForm par défaut de FireMonkey. Cette classe de fiche TAccForm a une implémentation séparée pour la plate-forme cible Windows qui implémente l'interface MSAA Windows et gère les interactions de tous les contrôles MSAA et FireMonkey placés sur la fiche. Une implémentation équivalente est aussi disponible pour macOS.
Cette classe TAccForm dispose d'une gestion intégrée de la plupart des contrôles FireMonkey communs et standard. Cela signifie qu'outre le fait de dériver des fiches de TAccForm plutôt que de TForm, vous n'avez pas besoin d'accomplir des étapes supplémentaires pour activer l'accessibilité dans les applications FireMonkey.
Introduction
Pour activer l'accessibilité dans une fiche multi-périphérique, commencez par ajouter les unités requises implémentant cette fonctionnalité. L'accessibilité est fournie dans trois unités :
- FMX.ScreenReader
- FMX.ScreenReader.Mac
- FMX.ScreenReader.Win.
La liste uses prend la forme suivante :
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}
;
L'étape suivante consiste à faire dériver la fiche de TAccForm plutôt que de TForm :
type
TForm1 = class(TAccForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Contrôles pris en charge
L'implémentation de l'accessibilité dans FireMonkey offre une prise en charge intégrée des contrôles standard FireMonkey suivants :
Contrôle FireMonkey | Classe d'accessibilité |
---|---|
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 |
Lorsque vous utilisez l'un quelconque de ces contrôles dans votre application FireMonkey, vous n'avez pas à entreprendre d'étape supplémentaire. TAccForm laissera le logiciel de lecture d'écran utilisé lire le texte ou l'état du contrôle. Notez que tous les contrôles descendant de ces contrôles standard FireMonkey héritent automatiquement de la prise en charge de l'accessibilité.
Ajout de la prise en charge de l'accessibilité aux contrôles FireMonkey personnalisés
Pour ajouter la prise en charge d'accessibilité pour un contrôle personnalisé, ajoutez l'interface IFMXAccessibility à votre contrôle et procédez à son implémentation.
IFMXAccessibility est défini comme suit :
// 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;
Cette interface est composée de deux méthodes simples :
- GetRole : renvoie le rôle du contrôle personnalisé
- GetControlText : renvoie le texte que le lecteur d'écran devra restituer vocalement lorsque le contrôle aura la focalisation.
Le type TFMXRole est défini comme suit :
TFMXRole = (rStaticText, rCell, rText, rButton, rCheckBox, rRadioButton, rGrid, rList, rSlider, rComboBox, rTabGroup);
Pour un contrôle d'édition personnalisé (qui ne descend pas d'un contrôle d'édition FireMonkey standard doté de la prise en charge d'accessibilité), l'implémentation peut s'effectuer sous la forme :
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;