程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi XE2 之 FireMonkey 入門(18)

Delphi XE2 之 FireMonkey 入門(18)

編輯:Delphi

一個小小的 TLang 類, 實現多語言切換, 挺好的. 它的工作思路是:

1、首先通過 AddLang('語言代碼') 添加語言類別, 如: AddLang('en')、AddLang('cn').
2、每個語言代碼對應一個 TStrings 列表, 獲取方式如: LangStr['en']、LangStr['cn'].
3、可以手動填充這些數據、可以通過 LoadFromFile() 方法載入之前 SaveToFile() 的數據(*.lng)、還可以在設計時提供的界面中操作這些數據.
4、切換時修改 Lang 屬性即可, 如 Lang := 'cn'.
5、它的作用域是當前工程的所有窗體及控件, 但不包括繪圖控件(如 TText)、控件中的文本和窗體標題等.



測試:
1、先在窗體上添加 TLang;
2、添加三個 TRadioButton, 用於切換語言;
3、添加 TButton、TCheckBox、TLabel 用於顯示測試;
4、激活 RadioButton1、Button1 和窗體的默認事件.


 

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.Objects;

type
  TForm1 = class(TForm)
    Lang1: TLang;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    Button1: TButton;
    CheckBox1: TCheckBox;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure RadioButton1Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation



procedure TForm1.FormCreate(Sender: TObject);
begin
  RadioButton1.Text := ;
  RadioButton2.Text := ;
  RadioButton3.Text := ;
  RadioButton1.Tag := ;
  RadioButton2.Tag := ;
  RadioButton3.Tag := ;
  RadioButton2.OnChange := RadioButton1.OnChange;
  RadioButton3.OnChange := RadioButton1.OnChange;

  
  Button1.Text := ;
  CheckBox1.Text := ;
  Label1.Text := ;
  Caption := ;

  
  Lang1.AddLang();
  Lang1.AddLang();
  Lang1.AddLang();

  
  with Lang1.Original do
  begin
    Add();
    Add();
    Add();
  end;

  
  with Lang1.LangStr[] do
  begin
    Add();
    Add();
    Add();
  end;

  
  with Lang1.LangStr[] do
  begin
    Values[] := ;
    Values[] := ;
    Values[] := ;
  end;

  
  with Lang1.LangStr[] do
  begin
    Values[] := ;
    Values[] := ;
    Values[] := ;
  end;
end;


procedure TForm1.RadioButton1Change(Sender: TObject);
begin
  case TRadioButton(Sender).Tag of
    : Lang1.Lang := ;
    : Lang1.Lang := ;
    : Lang1.Lang := ;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  for i :=  to Lang1.Resources.Count -  do
    ShowMessage(TStrings(Lang1.Resources.Objects[i]).Text);
end;

end.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved