Olá pessoal, hoje venho mostrar uma curiosidade que temos dentro da unit SysUtils, a classe TLanguages. Ela tem a finalidade de armazenar as linguagens que o sistema operacional suporta. Veja abaixo a sua estrutura.
Listagem 1: Estrutura de languages
{ This stores the languages that the system supports }
TLanguages = class
private
FSysLangs: array of TLangRec;
class destructor Destroy;
function LocalesCallback(LocaleID: PChar): Integer; stdcall;
function GetExt(Index: Integer): string;
function GetID(Index: Integer): string;
function GetLCID(Index: Integer): LCID;
function GetName(Index: Integer): string;
function GetNameFromLocaleID(ID: LCID): string;
function GetNameFromLCID(const ID: string): string;
function GetCount: integer;
public
constructor Create;
function IndexOf(ID: LCID): Integer;
property Count: Integer read GetCount;
property Name[Index: Integer]: string read GetName;
property NameFromLocaleID[ID: LCID]: string read GetNameFromLocaleID;
property NameFromLCID[const ID: string]: string read GetNameFromLCID;
property ID[Index: Integer]: string read GetID;
property LocaleID[Index: Integer]: LCID read GetLCID;
property Ext[Index: Integer]: string read GetExt;
end platform;
Agora como podemos usar esta classe? Usando uma maneira bem simples vou ilustrar o seu uso. Iremos precisar de uma aplicação e um formulário, feito isso no seu formulário adicione um TStringGrid, apenas isso e alinhe o mesmo “Align = alClient”, veja como deverá ficar o exemplo:
Figura 1. Layout do Formulário.
Agora no evento onCreate do nosso formulário vamos ver como implementar e utilizar esta classe, veja como é simples. Listagem 2: Usando a classe TLanguages
procedure TForm1.FormCreate(Sender: TObject);
var
{Observe que foram criadas 2 variáveis}
tempL : TLanguages; // Objeto para instanciar a classe
I : Integer; // Controlador do Loop
Begin
{Instanciando o nosso Objeto}
tempL := TLanguages.Create;
{Definindo tamanho de cada coluna no StringGrid}
StringGrid1.ColWidths[0] := 50;
StringGrid1.ColWidths[1] := 300;
StringGrid1.ColWidths[2] := 150;
StringGrid1.ColWidths[3] := 120;
StringGrid1.ColWidths[4] := 120;
{Definindo a quantidade de LINHAS que teremos +1, pois
precisamos informar o cabeçalho}
StringGrid1.RowCount := tempL.Count + 1;
{Definindo a quantidade de COLUNAS}
StringGrid1.ColCount := 5;
{Definindo os cabeçalhos das COLUNAS}
StringGrid1.Cells[0,0] := 'ID';
StringGrid1.Cells[1,0] := 'Name[I]';
StringGrid1.Cells[2,0] := 'ID[I]';
StringGrid1.Cells[3,0] := 'NameFromLocaleID[I]';
StringGrid1.Cells[4,0] := 'Ext';
{Loop para percorrer a lista com os dados armazenados em tempL }
for I := 1 to tempL.Count do
begin
{neste ponto fazemos apenas um loop simples, direcionando cada
propriedade para uma determinada COLUNA e LINHA do StringGrid }
StringGrid1.Cells[0,I] := IntToStr(I);
StringGrid1.Cells[1,I] := tempL.Name[I];
StringGrid1.Cells[2,I] := tempL.ID[I];
StringGrid1.Cells[3,I] := tempL.NameFromLocaleID[I];
StringGrid1.Cells[4,I] := tempL.Ext[I];
end;
end;
Figura 2. Exemplo funcionando.
Concluindo então nosso artigo, vimos mais uma classe dentro do Delphi que nos permite extrair informações do nosso Sistema Operacional de maneira, rápida e fácil.
Um abraço e até o próximo artigo.