利用INI文件实现界面无闪烁多语言切换

来源:计算机等级考试    发布时间:2012-08-28    计算机等级考试视频    评论

  越来越多的程序使用了多国语言切换,虽然Delphi自带多语言包的添加和配置,
  但是那种方法在切换语言时界面会出现闪烁,而且实现起来很麻烦,这里我介绍给大家的是利用INI文件来读取界面的语种文字,
  用这种方法,不但简单易行,而且在切换的时候不会出现界面的闪烁。
  我们从一个例子出发,看看怎么实现语言的切换。首先建立一个新工程。放置如下组件:(如图)

  MainMenu1: TMainMenu;
  File1: TMenuItem;
  Exit1: TMenuItem;
  Label1: TLabel;
  Button1: TButton;
  CheckBox1: TCheckBox;
  CheckBox2: TCheckBox;
  Button2: TButton;
  Label2: TLabel;
  ComboBox1: TComboBox;
  Label3: TLabel;
  由于要读取Ini文件,所以在USES中加入声明IniFiles;
  然后将Button1和Button2的ShowHint属性设置为True;
  其中我们用ComboBox1来显示可供选择的语言和用来选择语言。
  我们在程序的目录下编辑如下的Chinese GB.Ini文件:
  ;///////////////////////////////////////////////////////////////////
  ;
  ; 翻译的一些规则:
  ; 翻译前,拷贝 Chinese GB.ini 改名到 yourlanguage.ini
  ; 仅仅翻译符号'='后的文字
  ;
  [Translations]
  ;
  Label1.Caption =文字1
  Label2.Caption =文字2
  Label3.Caption =语言
  Button1.Caption =按钮1
  Button2.Caption =按钮2
  Button1.Hint =按钮1_提示
  Button2.Hint =按钮2_提示
  CheckBox1.Caption =复选框1
  CheckBox2.Caption =复选框2
  File1.Caption =文件
  Exit1.Caption =退出
  ;
  [Messages]
  ;
  M1 =信息框测试
  ;
  ;//////////////////////////////////////////////////////////////////
  同样的方法编辑一个名为English.ini的文件,将“=”左边的文字改为英文。
  例如:Label1.Caption =Label1

  程序运行时,我们查找当前目录下所有的语言配置文件(*.ini),
  为了达到这个目的,
  我编写了如下的函数搜索目录下所有的语言配置文件的文件名,
  然后将文件名去掉ini扩展名保存返回:
  function TForm1.SearchLanguagePack:TStrings;
  var
  ResultStrings:TStrings;
  DosError:integer;
  SearchRec:TsearchRec;
  begin
  ResultStrings:=TStringList.Create;
  DosError:=FindFirst(ExtractFilePath(ParamStr(0))+'*.ini', faAnyFile, SearchRec);
  while DosError=0 do
  begin
  { 返回的文件名并去掉末尾的.ini字符 }
  ResultStrings.Add(ChangeFileExt(SearchRec.Name,''));
  DosError:=FindNext(SearchRec);
  end;
  FindClose(SearchRec);
  Result:=ResultStrings;
  end;

上一页12下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答