delphi设计模式 多语言开发


系统支持简体、繁体、英文三种语言,开发语言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,只需在工厂类修改代码,其它客户端调用的地方不必修改,实现客户端代码与类的松散耦合

转载于:https://www.cnblogs.com/liaobotao/archive/2012/05/31/liaobt.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值