Serge Arbiol -
programmation Delphi
Retour
Source du programme Russe_Unicode
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls; type TForm1 = class(TForm) RichEdit1: TRichEdit; procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private { Déclarations privées } procedure FormateCaractere(Caractere: Char; Taille: integer; Couleur: TColor; Separateur: String); procedure SautLigne(Nombre: Integer); procedure AfficheTable; public { Déclarations publiques } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin // définit position et taille de la fiche Top:=0; Left:=0; width:=747; height:=650; // aligne RichEdit1 sur toute la fiche RichEdit1.Align:=AlClient; // définit la fonte de RichEdit1 en Courier New // pour avoir des caractères de même largeur RichEdit1.Font.Name:='Courier New'; RichEdit1.Font.Size:=10; end; procedure TForm1.FormShow(Sender: TObject); begin AfficheTable; end; procedure TForm1.FormateCaractere(Caractere: Char; Taille: integer; Couleur: TColor; Separateur: String); begin //-------------------------------------------------------- // formate le caractère indiqué et l'affichage de son code // ------------------------------------------------------- // formate le caractère RichEdit1.SelAttributes.Color:=Couleur; RichEdit1.SelAttributes.Style:=RichEdit1.SelAttributes.Style+[fsBold]; RichEdit1.SelAttributes.Size:=Taille; // insère RichEdit1.SelText:=Caractere; // si accent unicode, rajouter l'espace supprimé if Caractere=chr(769) then RichEdit1.SelText:=' '; // formate son code RichEdit1.SelAttributes.Color:=clBlack; RichEdit1.SelAttributes.Style:=RichEdit1.SelAttributes.Style-[fsBold]; RichEdit1.SelAttributes.Size:=10; // insère code et séparateur RichEdit1.SelText:=' '+inttostr(ord(Caractere))+Separateur; end; procedure TForm1.SautLigne(Nombre: Integer); var i: Integer; begin // saute 1 ou plusieurs lignes dans RichEdit for i:=1 to Nombre do RichEdit1.SelText:=#13#10; end; procedure TForm1.AfficheTable; var i: integer; begin //====================================================================== // Affiche dans RichEdit1 les caractère latins, cyrilliques et leur code //====================================================================== //------ // Titre //------ RichEdit1.SelAttributes.Style:=RichEdit1.SelAttributes.Style+[fsBold]; RichEdit1.SelAttributes.Size:=14; RichEdit1.SelText:='Codage Unicode latin / cyrillique'; SautLigne(2); //------------------- // Majuscules latines //------------------- RichEdit1.SelAttributes.Color:=clBlue; RichEdit1.SelText:='--- MAJUSCULES LATINES ---'; SautLigne(2); for i:=65 to 90 do FormateCaractere(chr(i),12,clRed,' - '); //------------------- // Minuscules latines //------------------- SautLigne(2); RichEdit1.SelAttributes.Color:=clBlue; RichEdit1.SelText:='--- MINUSCULES LATINES ---'; SautLigne(2); // affiche jusqu'à 99 car à partir de 100, il y aurait décalage horizontal // étant donné qu'on passe de 2 à 3 chiffres pour le code for i:=97 to 99 do FormateCaractere(chr(i),12,clRed,' - '); // ensuite on enlève 1 espace pour éviter le décalage for i:=100 to 122 do FormateCaractere(chr(i),12,clRed,' - '); //----------------------- // Majuscules cyrilliques //----------------------- SautLigne(2); RichEdit1.SelAttributes.Color:=clBlue; RichEdit1.SelText:='--- MAJUSCULES CYRILLIQUES ---'; SautLigne(2); RichEdit1.SelAttributes.Color:=clBlack; // on enlève encore 1 espace pour éviter le décalage for i:=1040 to 1071 do FormateCaractere(chr(i),12,clRed,'- '); //---------------------------------- // Cas du io majuscule (codé à part) //---------------------------------- SautLigne(2); FormateCaractere(chr(1025),12,clRed,''); //----------------------- // Minuscules cyrilliques //----------------------- SautLigne(2); RichEdit1.SelAttributes.Color:=clBlue; RichEdit1.SelText:='--- MINUSCULES CYRILLIQUES ---'; SautLigne(2); RichEdit1.SelAttributes.Color:=clBlack; for i:=1072 to 1103 do FormateCaractere(chr(i),12,clRed,'- '); //---------------------------------- // Cas du io minuscule (codé à part) //---------------------------------- SautLigne(2); FormateCaractere(chr(1105),12,clRed,''); //------------------------- // rajoute l'accent unicode //------------------------- SautLigne(2); RichEdit1.SelAttributes.Color:=clBlue; RichEdit1.SelText:='--- ACCENT ---'; SautLigne(2); FormateCaractere(chr(769),12,clRed,''); end; end.