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

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

  在Form建立的事件中添加代码,将目录下所有的语言文件名加入选择列表框中。
  procedure TForm1.FormCreate(Sender: TObject);
  begin
  ComboBox1.Items.AddStrings(SearchLanguagePack);
  end;

  程序的重点在如何切换语言,在ComboBox1的OnChange事件中进行切换操作。
  这里我写了SetActiveLanguage过程用于实现这一操作。
  procedure TForm1.ComboBox1Change(Sender: TObject);
  begin
  SetActiveLanguage(ComboBox1.Text);
  end;
  其中SetActiveLanguage代码如下:
  procedure TForm1.SetActiveLanguage(LanguageName:string);
  const
  Translations='Translations';
  Messages='Messages';
  var
  frmComponent:TComponent;
  i:Integer;
  begin
  with TInifile.Create(ExtractFilePath(ParamStr(0))+LanguageName+'.ini') do
  begin
  for i:=0 to ComponentCount-1 do { 遍历Form组件 }
  begin
  frmComponent:=Components[i];
  if frmComponent is TLabel then { 如果组件为TLabel型则当作TLabel处理,以下同 }
  begin
  (frmComponent as TLabel).Caption:=
  ReadString(Translations,frmComponent.Name+'.Caption',(frmComponent as TLabel).Caption);
  end;
  if frmComponent is TCheckBox then
  begin
  (frmComponent as TCheckBox).Caption:=
  ReadString(Translations,frmComponent.Name+'.Caption',(frmComponent as TCheckBox).Caption);    
  end;
  if frmComponent is TButton then
  begin
  (frmComponent as TButton).Caption:=
  ReadString(Translations,frmComponent.Name+'.Caption',(frmComponent as TButton).Caption);
  (frmComponent as TButton).Hint:=
  ReadString(Translations,frmComponent.Name+'.Hint',(frmComponent as TButton).Hint);
  end;
  if frmComponent is TMenuItem then
  begin
  (frmComponent as TMenuItem).Caption:=
  ReadString(Translations,frmComponent.Name+'.Caption',(frmComponent as TMenuItem).Caption);
  end;
  end;
  M1:=ReadString(Messages,'M1',M1);
  end;
  end;
  在这个过程中,我们遍历了Form中的所有组件,
  根据他们的类别和组件名动态的从ini配置文件中读出应该显示的语言文字。
  用遍历组件的方法比一个一个写出具体的组件维护起来要方便很多,代码的适应性也更强。
  其中M1为一个字符串变量,这样提示消息也能切换,比如在Button1的Click事件中
  procedure TForm1.Button1Click(Sender: TObject);
  begin
  ShowMessage(M1);
  end;
  就可以根据不同的语言给出不同的提示文字
  好了,整个工程就做完了,你可以运行测试一下,是不是切换迅速而且无闪烁。

上一页12下一页

视频学习

我考网版权与免责声明

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

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

最近更新

社区交流

考试问答