MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Alors, j'ai fait un test avec SKIA pour les grilles.
cela semble fonctionner. une différence par rapport à mon code
Il faut laisser le TextAlign à Leading, ce qui veut dire que Skia utilise le TFillTextFlag.RightToLeft pour aligner à droite (donc, pour pouvoir mêler les textes RTL et non RTL il faudrait modifier la fonction CheckRtL que j'ai proposée plus haut)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 procedure TForm1.Grid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF; const Row: Integer; const Value: TValue; const State: TGridDrawStates); begin if (Column.Index=1) AND (Row>=1) // seule la première ligne n'est pas RTL then begin Canvas.Fill.Color:=TAlphaColors.Red; Canvas.FillText(Bounds,Value.ToString,false,1,[TFillTextFlag.RightToLeft],TTextAlign.Leading); end else Column.DefaultDrawCell(Canvas,bounds,row,value,state); end;
Si un arabisant lit texte algérien en ligne 2 et un hébreu texte hébreu en ligne 3, c'est gagné (merci google trad)
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Pour afficher le texte en hébreu vous pouvez jetez un coup d’œil sur le code de la fonction PHP Hebrev pour l'arabe c'est la même chose mais avant d'inverser les segments RTL on joint les caractères selon leurs contexte dans le mot ...Substitution basique
si on applique cette substitution sur le premier code dans ce topic ça donnerait
initial
مرحبا بالعالم
$0645, $0631, $062D, $0628, $0627, $0020, $0628, $0627, $0644, $0639, $0627, $0644, $0645
devient
ﻣﺮﺣﺒﺎ ﺑﺎﻟﻌﺎﻟﻢ
$FEE3, $FEAE, $FEA3, $FE92, $FE8E, $0020, $FE91, $FE8E, $FEDF, $FECC, $FE8E, $FEDF, $FEE2
maintenant il suffit d'inverser les textes RTL pour les dessiner correctement sous Andriod
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager