您的位置:首页 > 编程语言 > Delphi

delphi设计模式 多语言开发

2012-05-31 14:23 337 查看
系统支持简体、繁体、英文三种语言,开发语言Delphi

type
//接口定义
ILanguageTrans = interface
['{EE1BAE27-2E88-4F76-8AF3-169B6C7BF7C1}']
procedure ReadForm; //把界面所有控件翻译
procedure WriteForm;//把界面所有控件写入
function GetText(Msg: string): string;
function BIG5ToGB(Str: string): string;
function GBToBIG5(Str: string): string;
procedure ShowManager; //打开管理界面

end;

TLanguageTrans = class(TInterfacedObject, ILanguageTrans)
private
protected
public
constructor Create(Form: TForm; MTSName, ModuleCode: string); { 构造方法 }
procedure ShowManager; virtual; //管理界面
procedure ReadForm; virtual;
procedure WriteForm; virtual;
function GetText(Msg: string): string; virtual;
function BIG5ToGB(Value: string): string; virtual;
function GBToBIG5(Value: string): string; virtual;
end;

// 保存到数据库
TDBLanguageTrans = class(TLanguageTrans)
private
FFrmForm: TForm;
FTranDataSet: TClientDataSet;
FDB: TDBClass;
FMTSName: string;
FModuleCode: string;
function ReadData(ConName: string): string;
protected

published
property frmForm: TForm read FFrmForm write FFrmForm;
property TranDataSet: TClientDataSet read FTranDataSet write FTranDataSet;
property DB: TDBClass read FDB write FDB;
property MTSName: string read FMTSName write FMTSName;
property ModuleCode: string read FModuleCode write FModuleCode;
public
constructor Create(Form: TForm; MTSName, ModuleCode: string); { 构造方法 }

procedure ShowManager; override;
procedure ReadForm; override;
procedure WriteForm; override;

end;

// INI
TIniLanguageTrans = class(TLanguageTrans)
private
FIniFileName: string;
FFrmForm: TForm;

published
property IniFileName: string read FIniFileName write FIniFileName;
property frmForm: TForm read FFrmForm write FFrmForm;

public
constructor Create(Form: TForm; MTSName, ModuleCode: string); { 构造方法 }
procedure ReadForm; override;
procedure WriteForm; override;
procedure ShowManager; override;

end;

//工厂模式
TLanguageTransFactory = class
private
public
function Create(Form: TForm; MTSName, ModuleCode: string): TLanguageTrans;
end;

客户端调用:

var
LanguageTransFactory: TLanguageTransFactory;
begin
(LanguageTransFactory.Create(self, MTSName, ModuleCode)).ReadForm;

如果增加或更改存储方式,如XML,只需在工厂类修改代码,其它客户端调用的地方不必修改,实现客户端代码与类的松散耦合
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: