Inclusion de fonctionnalités bi-directionnelles dans les applications

De RAD Studio
Aller à : navigation, rechercher

Remonter à Permettre au code de l'application de fonctionner pour différentes régions


Certaines langues ne se lisent pas de gauche à droite comme la plupart des langues occidentales, mais de droite à gauche pour les mots et de gauche à droite pour les nombres. Ces langues sont dites bi-directionnelles (BiDi) du fait de cette séparation. Les langues bi-directionnelles les plus courantes sont l'Arabe et l'Hébreu, sans parler d'autres langues de l'Est.

La VCL prend en charge la localisation bi-directionnelle via les propriétés BiDiMode et ParentBiDiMode. TApplication dispose de deux propriétés, BiDiKeyboard et NonBiDiKeyboard, vous permettant de spécifier la disposition clavier.


Objets VCL qui prennent en charge BiDi

Standard Objets supplémentaires Win32 Contrôles de données Autres classes
  • TButton
  • TCheckBox
  • TComboBox
  • TEdit
  • TGroupBox
  • TLabel
  • TListBox
  • TMainMenu
  • TMemo
  • TPanel
  • TPopupMenu
  • TRadioButton
  • TRadioGroup
  • TScrollBar
  • TActionMainMenuBar
  • TActionToolBar
  • TBitBtn
  • TCheckListBox
  • TColorBox
  • TDrawGrid
  • TLabeledEdit
  • TMaskEdit
  • TScrollBox
  • TSpeedButton
  • TStaticLabel
  • TStaticText
  • TStringGrid
  • TValueListEditor
  • TComboBoxEx
  • TDateTimePicker
  • THeaderControl
  • THotKey
  • TListView
  • TMonthCalendar
  • TPageControl
  • TRichEdit
  • TStatusBar
  • TTabControl
  • TTreeView
  • TDBCheckBox
  • TDBComboBox
  • TDBEdit
  • TDBGrid
  • TDBListBox
  • TDBLookupComboBox
  • TDBLookupListBox
  • TDBMemo
  • TDBRadioGroup
  • TDBRichEdit
  • TDBText
  • TApplication (n'a pas de ParentBiDiMode)
  • TBoundLabel
  • TControl (n'a pas de ParentBiDiMode)
  • TCustomHeaderControl (n'a pas de ParentBiDiMode)
  • TForm
  • TFrame
  • THeaderSection
  • THintWindow (n'a pas de ParentBiDiMode)
  • Menu
  • TStatusPanel

Remarque : THintWindow capte le BiDiMode du contrôle qui a activé le conseil.

Propriété BiDiMode

La propriété BiDiMode contrôle le sens de lecture du texte, la position de la barre de défilement verticale et si l'alignement est modifié. Les contrôles disposant d'une propriété texte, telle que Name, affichent la propriété BiDiMode dans l'inspecteur d'objets.

La propriété BiDiMode appartient au type énuméré TBiDiMode. TBiDiMode a quatre états : bdLeftToRight, bdRightToLeft, bdRightToLeftNoAlign et bdRightToLeftReadingOnly :

State

Description

Sample

bdLeftToRight

Dessine le texte en utilisant le sens de lecture de gauche à droite. L'alignement et les barres de défilement étant inchangés. Par exemple, lors de la saisie de texte de droite à gauche, comme pour l'Arabe ou l'Hébreu, le curseur passe en mode poussoir et le texte est entré de droite à gauche. Pour du texte latin, comme l'Anglais ou le Français, il est entré de gauche à droite. bdLeftToRight est la valeur par défaut.

TListBox set to bdLeftToRight.jpg

bdRightToLeft

Dessine le texte en utilisant le sens de lecture de droite à gauche, l'alignement étant modifié et la barre de défilement déplacée. Le texte est entré normalement pour les langues allant de droite à gauche comme l'Arabe ou l'Hébreu. Lorsque le clavier est modifié pour une langue latine, le curseur passe en mode poussoir et le texte est entré de gauche à droite.

TListBox set to bdRightToLeft.jpg

bdRightToLeftNoAlign

Dessine le texte en utilisant le sens de lecture de droite à gauche, l’alignement étant inchangé et la barre de défilement déplacée.

TListBox set to bdRightToLeftNoAlign.jpg

bdRightToLeftReadingOnly

Dessine le texte en utilisant le sens de lecture de droite à gauche, l'alignement et les barres de défilement étant inchangés.

TListBox set to bdRightToLeftReadingOnly.jpg

Propriété ParentBiDiMode

ParentBiDiMode est une propriété booléenne. Si elle est définie sur True (la valeur par défaut), le contrôle recherche son parent pour déterminer quel est le BiDiMode à utiliser. Si le contrôle est un objet TForm, la fiche utilise le paramètre BiDiMode de Application. Si toutes les propriétés ParentBiDiMode sont définies sur True, lorsque la propriété BiDiMode de Application est modifiée, toutes les fiches et tous les contrôles du projet sont mis à jour avec le nouveau paramètre.

Méthode FlipChildren

La méthode FlipChildren vous permet de faire basculer la position des enfants d'un contrôle conteneur. Les contrôles conteneur sont des contrôles qui contiennent d'autres contrôles. Voici des exemples de contrôles conteneur : TForm, TPanel et TGroupBox. FlipChildren possède un seul paramètre booléen, AllLevels. Quand AllLevels est défini sur False, seuls les enfants immédiats du contrôle conteneur sont basculés de position. Quand AllLevels est défini sur True, les enfants de tous niveaux du contrôle conteneur sont basculés de position.

Delphi fait basculer la position des contrôles en modifiant la propriété Left et l'alignement du contrôle. Si le côté gauche d'un contrôle est à cinq pixels du bord gauche de son contrôle parent, le basculement provoque l'affichage du côté droit du contrôle d'édition à cinq pixels du bord droit de son contrôle parent. Si le contrôle d'édition est aligné à gauche, un appel à FlipChildren provoquera un alignement à droite.

Pour basculer la position d'un contrôle lors de la conception, sélectionnez Edition > Basculer les enfants, puis Tous ou Sélectionnés suivant que vous voulez basculer la position de tous les contrôles ou seulement les enfants du contrôle sélectionné. Vous pouvez aussi basculer la position des contrôles au sein d'un contrôle conteneur, en sélectionnant le contrôle conteneur sur la fiche, en cliquant avec le bouton droit et en sélectionnant Basculer les enfants dans le menu contextuel.

Remarque : La sélection d'un contrôle d'édition et l'émission d'une commande Basculer les enfants > Sélectionnés ne fait rien. Cela est du au fait que les contrôles d'édition ne sont pas des conteneurs.

Autres méthodes utiles pour la fonctionnalité bi-directionnelle

Il existe d'autres méthodes utiles afin de développer des applications pour des utilisateurs bi-directionnels.

Méthodes de la VCL prenant en charge BiDi :

Méthode Description

OkToChangeFieldAlignment

Utilisée avec les contrôles base de données. Vérifie si l'alignement d'un contrôle peut être modifié.

DBUseRightToLeftAlignment

Utilisée pour vérifier l'alignement des contrôles base de données.

ChangeBiDiModeAlignment

Modifie le paramètre d'alignement qui lui est transmis. Aucune vérification n'est faite pour le paramètre BiDiMode, car il y a juste conversion de l'alignement à gauche vers l'alignement à droite, et vice-versa.

IsRightToLeft

Renvoie True si une des options allant de droite à gauche est sélectionnée. Renvoie False si le contrôle est dans un mode allant de gauche à droite.

UseRightToLeftReading

Renvoie True si le contrôle utilise le sens de lecture allant de droite à gauche.

UseRightToLeftAlignment

Renvoie True si le contrôle utilise le sens d'alignement allant de droite à gauche. Il peut être redéfini pour être personnalisé.

UseRightToLeftScrollBar

Renvoie True si le contrôle utilise une barre de défilement à gauche.

DrawTextBiDiModeFlags

Renvoie les indicateurs texte de dessin corrects pour le BiDiMode du contrôle.

DrawTextBiDiModeFlagsReadingOnly

Renvoie l'indicateur DT_RTLREADING ou 0, selon la valeur renvoyée par la méthode UseRightToLeftReading.

AddBiDiModeExStyle

Ajoute les indicateurs ExStyle appropriés au contrôle créé.

Voir aussi