Suporte para Acessibilidade no FireMonkey

Disponibilidade

O suporte de acessibilidade FireMonkey está disponível para Delphi e C++ Builder XE6 para Windows Win32, Win64 e para aplicações Mac OS-X. Os usuários registrados podem baixar o pacote neste link:

http://cc.embarcadero.com/item/29850

Tecnologia

O suporte de acessibilidade FireMonkey é baseado na interface Microsoft MSAA para Windows ( Microsoft Active Accessibility arquitetura ) e no protocolo de acessibilidade do OS-X e para MAC.

As informações sobre as APIs podem ser encontradas em :

MSAA: http://msdn.microsoft.com/en-us/library/ms971310.aspx

OS-X: http://goo.gl/dguz6N

A implementação do Windows MSAA foi testado com Freedom Scientific JAWS e Microsoft Windows Narrador.

No Mac OS X, ele foi testado contra os aplicativos da Apple VoiceOver .

Arquitetura

Para implementar as interfaces de acessibilidade do sistema operacional, uma nova classe de formulário foi derivado do padrão FireMonkey TForm. Esta nova classe (TAccForm) tem uma implementação diferente para o sistema Windows e outra para OS-X, mapeando todas as interações necessárias com os controles do FireMonkey. Esta classe TAccForm tem tratamento interno para os controles mais comuns e padrões do FireMonkey. Isso significa que, além de descender seus forms de TAccForm em vez de TForm, o desenvolvedor não tem medidas adicionais a tomar para permitir a acessibilidade em aplicações FireMonkey.

Implementação

Para ativar um formulário FireMonkey para acessibilidade, primeiro adicione as unidades necessárias que implementam esta característica. A acessibilidade vem em 3 unidades: FMX.ScreenReaderCommon, FMX.ScreenReader.Mac e FMX.ScreenReader.Win:

uses
  System.SysUtils, System.Types, System.UITypes, System.Rtti,
  System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms,
  FMX.Dialogs, FMX.StdCtrls, FMX.ScreenReaderCommon
  {$IFDEF MACOS}
  , FMX.ScreenReader.Mac
  {$ELSE}
  , FMX.ScreenReader.Win
  {$ENDIF}
  ;

Em seguida, descenda seu form de TAccForm, em vez de TForm:

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

var
  Form1: TForm1;

Controles Suportados

A implementação de acessibilidade FireMonkey tem suporte automático para os seguintes controles do FireMonkey :

TButton
TSpeedButton
TTracker
TEdit
TListBox
TComboBox
TComboEdit
TSpinBox
TLabel
TCheckBox
TRadioButton
TMainMenu
TMemo
TTreeView
TCustomGrid
Isso significa que quando você usar qualquer um desses controles em seu aplicativo, não há medidas adicionais a tomar. O TAccForm vai corretamente permitir ao software leitor de tela “ler” o texto ou o “estado” destes controles. Note-se também que todos os controles descendentes também irão herdar automaticamente o suporte de acessibilidade .

Controles Personalizados

Para adicionar suporte para um controle personalizado para acessibilidade, adicione a interface IFMXAccessibility em seu controle ao implementá-lo.

O IFMXAccessibility é definida como :

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

Portanto, esta interface é constituída por dois métodos simples :

GetRole: returns the role of the custom control
GetControlText: returns the text the screenreader should voice when the control has focus

Já o tipo TFMXRole é definida como :

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

Assim, para um controle de edição personalizada, este pode ser implementado como :

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;

Advertisements

Biblioteca de Webinars Delphi, C++ Builder, FireMonkey e HTML5 Builder

Agora você pode ver todos os nossos webinars reunidos em um único local, repletos de detalhes técnicos sobre desenvolvimento de software, dicas de especialistas do setor, obtendo insights e inspiração para ajudá-lo a fazer mais com Delphi, C++ Builder, FireMonkey e HTML5 Builder.

Basta selecionar qualquer dos links exibidos na página e preencher um formulário de registro rápido para obter o vídeo replay e informações relacionadas.

São dezenas de horas com vídeos e tutoriais do mais puro conteúdo técnico, tenho certeza que você vai encontrar informações relevantes que vão lhe ajudar a codificar melhor e tirar o máximo proveito de nossas ferramentas.

Não deixe de conferir: http://www.embarcadero.com/products/rad-studio/webinars

Muitos artigos de nosso time sobre RAD Studio XE3

Darren Kosinski escreveu sobre FireMonkey 2 Under The Hood Changes: PropertiesFireMonkey 2 Under The Hood Changes: PlatformServices

Eugene Kryukov sobre Bitmap Styles in FireMonkey 2.0,DirectX 10 in FireMonkey 2.0Styles Performance in XE3

Jim Tierney mostra detalhes sobre XE3 Visual LiveBindings: Link controls to component propertiesXE3 Visual LiveBindings: Actions

José León está falando sobre HTML5 Builder – Client Pages

Masahiro Arai postou Are you ready for Windows 8? Here is Live Tiles for your Apps

Sergey Roschin esclareceu muito sobre TAction in XE3 (Google Translate link)

Stephen Blas apresenta como usar RAD Studio XE3 and SQLite

Yaroslav Brovin escreveu sobre Scrolling images by hand, using FMX 2.0, Part 1 (Google Translate link)

FireMonkey 2: Novos Recursos

Neste vídeo apresento as novidades introduzidas no FireMonkey 2. Nele você vai conhecer dezenas de novos recursos da plataforma, como por exemplo:

  • Suporte a Actions, ActionLists, LiveBindings Actions, AnchorsAlignment
  • Novos padrões de layout como Grid e Flow Layout
  • Captura e Reprodução de Foto, Vídeo e Áudio
  • Estilos baseados em Bitmap, contando com um editor de estilos redistribuível
  • Controles Pixel Perfect e suporte a Retina Display
  • Suporte a Sensores e Serviços – GPS, Accelerometer, Gyro

E muito mais… vamos ao vídeo:

Apresentação do FireMonkey 2 (FM2)