现有一套软件功能基本已经齐全,现在想增加一功能:多语言,请问应怎么设计?

altans 2004-10-13 10:08:46
就是在原system菜单上加一个language:English,Italy,French...的菜单,当点击english,界面就显示english,其他的相同,请问如何设计?
...全文
202 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
火星牛 2004-12-24
  • 打赏
  • 举报
回复
看看这套元件
www.acroprise.com.tw
把元件放到主画面,不用修改你别的form的代码,就可以增加任意语言支持了。
masterjames 2004-10-13
  • 打赏
  • 举报
回复
DELPHI里有个多语言DLL,在工程向导里有
altans 2004-10-13
  • 打赏
  • 举报
回复
zhangsan6416@21cn.com,谢谢
wycg_cnh20 2004-10-13
  • 打赏
  • 举报
回复
就是你的整个工程中的form都继承自它。
这样的话,你可能没一个Form的申明部门都要改动
TYourForm=Class(TForm)====>>>> TYourForm=Class(TBaseForm)

你给我一个邮箱,Ok
altans 2004-10-13
  • 打赏
  • 举报
回复
To:wycg_cnh20(伤心郁闷中)
悄悄的问你个问题,全系统的基类应该怎么定义啊
wycg_cnh20 2004-10-13
  • 打赏
  • 举报
回复
我这边有一套成熟的方案,用了很久
1.定义一个全系统的基类Form(如果有的话,就在你的基类form中写)
2.将需要读取的标题信息都防到ini中(每一种语言一种ini)
3.procedure TfBase.pdReadCaptions(Sender:TControl;Const aHeader:String);
var
lnComp,i:Integer;
Inifile:Tinifile;
begin
try
Inifile:=Tinifile.Create(g_StrFileName);
if Sender=Self then
begin
Caption:=Inifile.ReadString(aHeader,'Caption',Caption);
Font.Size:=s_nFontSize;
Font.Name:=s_StrFontName;
ParentFont:=True;
end;

//
with TControl(Sender) do
for lnComp:=0 to ComponentCount-1 do
begin
if (Components[lnComp] is TCommonDialog) then
Continue;

//Panel
if (Components[lnComp] is TPanel) then
begin
TPanel(Components[lnComp]).Caption:=Inifile.ReadString(aHeader,TPanel(Components[lnComp]).Name,'');
TPanel(Components[lnComp]).Font.Size:=s_nFontSize;
TPanel(Components[lnComp]).Font.Name:=s_StrFontName;
Continue;
end;

//DbCheckBox
if (Components[lnComp] is TDbCheckBox) then
begin
TDbCheckBox(Components[lnComp]).Caption:=Inifile.ReadString(aHeader,TDbCheckBox(Components[lnComp]).Name,'');
TDbCheckBox(Components[lnComp]).Font.Size:=s_nFontSize;
TDbCheckBox(Components[lnComp]).Font.Name:=s_StrFontName;
Continue;
end;

//Button
if (Components[lnComp] is TButton) then
begin
TButton(Components[lnComp]).Caption:=Inifile.ReadString(aHeader,TControl(Components[lnComp]).Name,'');
TButton(Components[lnComp]).Font.Size:=s_nFontSize;
TButton(Components[lnComp]).Font.Name:=s_StrFontName;
Continue;
end;
//CheckBox
if (Components[lnComp] is TCheckBox) then
begin
TCheckBox(Components[lnComp]).Caption:=Inifile.ReadString(aHeader,TControl(Components[lnComp]).Name,'');
TCheckBox(Components[lnComp]).Font.Size:=s_nFontSize;
TCheckBox(Components[lnComp]).Font.Name:=s_StrFontName;
Continue;
end;
//GroupBox
if (Components[lnComp] is TGroupBox) then
begin
TGroupBox(Components[lnComp]).Caption:=Inifile.ReadString(aHeader,TControl(Components[lnComp]).Name,'');
TGroupBox(Components[lnComp]).Font.Size:=s_nFontSize;
TGroupBox(Components[lnComp]).Font.Name:=s_StrFontName;
continue;
end;
//RadioButton
if (Components[lnComp] is TRadioGroup) then
begin
TRadioGroup(Components[lnComp]).Caption:=Inifile.ReadString(aHeader,TControl(Components[lnComp]).Name,'');
Continue;
end;
//SpeedButton
if (Components[lnComp] is TSpeedButton) then
begin
TSpeedButton(Components[lnComp]).Caption:=Inifile.ReadString(aHeader,TControl(Components[lnComp]).Name,'');
TSpeedButton(Components[lnComp]).Font.Size:=s_nFontSize;
TSpeedButton(Components[lnComp]).Font.Name:=s_StrFontName;
Continue;
end;
//StaticText
if (Components[lnComp] is TStaticText) then
begin
TStaticText(Components[lnComp]).Caption:=Inifile.ReadString(aHeader,TControl(Components[lnComp]).Name,'');
TStaticText(Components[lnComp]).Font.Size:=s_nFontSize;
TStaticText(Components[lnComp]).Font.Name:=s_StrFontName;
Continue;
end;
//LabeledEdit
if (Components[lnComp] is TLabeledEdit ) then
begin
TLabeledEdit(Components[lnComp]).EditLabel.Caption:=Inifile.ReadString(aHeader,TControl(Components[lnComp]).Name,'');

Continue;
end;
//MenuItem
if (Components[lnComp] is TMenuItem) then
begin
TMenuItem(Components[lnComp]).Caption:=Inifile.ReadString(aHeader,TControl(Components[lnComp]).Name,'');
Continue;
end;
//Label
if (Components[lnComp] is TLabel ) then
begin
TLabel(Components[lnComp]).Caption:=inifile.ReadString(aHeader,TControl(Components[lnComp]).Name,'');
TLabel(Components[lnComp]).Font.Size:=s_nFontSize;
TLabel(Components[lnComp]).Font.Name:=s_StrFontName;
Continue;
end;
//TabSheet
if (Components[lnComp] is TTabSheet) then
begin
TTabSheet(Components[lnComp]).Caption:=inifile.ReadString(aHeader,TControl(Components[lnComp]).Name,'');
TTabSheet(Components[lnComp]).Font.Size:=s_nFontSize;
TTabSheet(Components[lnComp]).Font.Name:=s_StrFontName;
Continue;
end;
//RadioButton
if (Components[lnComp] is TRadioButton) then
begin
TRadioButton(Components[lnComp]).Caption:=inifile.ReadString(aHeader,TControl(Components[lnComp]).Name,'');
TRadioButton(Components[lnComp]).Font.Size:=s_nFontSize;
TRadioButton(Components[lnComp]).Font.Name:=s_StrFontName;
Continue;
end;



//Frame 框架里的东西
if (Components[lnComp]) is TFrame then
for i:=0 to TFrame(Components[lnComp]).ComponentCount-1 do
pdReadCaptions(TFrame(Components[lnComp]),Copy(TFrame(Components[lnComp]).ClassName,2,length(TFrame(Components[lnComp]).ClassName)));
//


end;
finally
Inifile.Free;
end;
end;
altans 2004-10-13
  • 打赏
  • 举报
回复
up

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧