t 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;
就能根据不同的语言给出不同的提示文字。
好了,整个工程就做完了,你能运行测试一下,是不是转换迅速而且无闪烁。