Delphi下IOC 模式的实现(反转模式,即Callback模式)
unit frmStartPage;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ImgList,Contnrs, ComCtrls, ExtCtrls;
Type
//填充pageControl的Frame基类
TPageFrame = class(TFrame)
protected
function Caption :String ; virtual; abstract;
end;
TPageFrameClass = class of TPageFrame ;
TStartPage = class(TForm)
PageControl1: TPageControl;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
StartPage :TStartPage ;
RegTabSheetClasses: TClassList;
procedure RegisterStartPageTabSheet( AFrameClass :TPageFrameClass);
implementation
{$R *.dfm}
procedure TStartPage.FormCreate(Sender: TObject);
var
i:integer;
lTabSheet : TTabSheet;
lFrame : TPageFrame;
begin
for i:= 0 to RegTabSheetClasses.Count -1 do
begin
lTabSheet := TTabSheet.Create(PageControl1);
lFrame := TPageFrameClass( RegTabSheetClasses[i]).Create(self) as TPageFrame;
lTabSheet.Caption := lFrame.Caption ;
lFrame.Align := alClient;
lTabSheet.InsertControl(lFrame);
lTabSheet.PageControl := PageControl1;
lTabSheet.PageIndex := 0 ;
end;
end;
procedure RegisterStartPageTabSheet( AFrameClass :TPageFrameClass);
begin
RegTabSheetClasses.Add(AFrameClass);
end;
initialization
RegTabSheetClasses := TClassList.Create ;
finalization
RegTabSheetClasses.Free;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,frmStartPage, StdCtrls;
type
TFrame2 = class(TPageFrame)
Label1: TLabel;
private
{ Private declarations }
protected
{ Public declarations }
function Caption :String ; override;
public
end;
implementation
{$R *.dfm}
{ TFrame2 }
function TFrame2.Caption: String;
begin
result := 'Frame1';
end;
initialization
RegisterStartPageTabSheet(TFrame2);
end.转至:http://tb.blog.csdn.net/
http://www.cnblogs.com/sonicit/archive/2008/04/08/1141831.html
Delphi下IOC 模式的实现(反转模式,即Callback模式)的更多相关文章
- [.net 面向对象程序设计深入](26)实战设计模式——使用Ioc模式(控制反转或依赖注入)实现松散耦合设计(1)
[.net 面向对象程序设计深入](26)实战设计模式——使用IoC模式(控制反转或依赖注入)实现松散耦合设计(1) 1,关于IOC模式 先看一些名词含义: IOC: Inversion of con ...
- [.net 面向对象程序设计深入](31)实战设计模式——使用Ioc模式(控制反转或依赖注入)实现松散耦合设计(1)
[.net 面向对象程序设计深入](31)实战设计模式——使用IoC模式(控制反转或依赖注入)实现松散耦合设计(1) 1,关于IOC模式 先看一些名词含义: IOC: Inversion of con ...
- Ioc 器管理的应用程序设计,前奏:容器属于哪里? 控制容器的反转和依赖注入模式
Ioc 器管理的应用程序设计,前奏:容器属于哪里? 我将讨论一些我认为应该应用于“容器管理”应用程序设计的原则. 模式1:服务字典 字典或关联数组是我们在软件工程中学到的第一个构造. 很容易看到使 ...
- Elite Container DELPHI下的一个轻量级IoC对象容器
一.简介: Elite Container是DELPHI下的一个轻量级IoC对象容器(IoC:Inverse of Control,反转控制).它是参考了Java中的Spring框架(主要是配置文件的 ...
- Java 控制反转和依赖注入模式【翻译】【整理】
Inversion of Control Containers and the Dependency Injection pattern --Martin Fowler 本文内容 Component ...
- 大端模式、小端模式和C#反转
A.C#大端模式和小端模式. 小端(little-endian)模式:低地址上存放低字节,高地址上存放高字节. 如0x11223344→ byte[] numBytes = new byte[]{ 0 ...
- ASM:《X86汇编语言-从实模式到保护模式》越计卷:实模式下对DMA和Sound Blaster声卡的控制
说实话越计卷作者用了16页(我还是删过的),来讲怎么控制声卡,其实真正归纳起来就那么几点. ★PART1:直接存储访问 1. 总线控制设备(bus master) 在硬件技术不发达的早期,处理器是最重 ...
- 深度分析Linux下双网卡绑定七种模式 多网卡的7种bond模式原理
http://blog.csdn.net/abc_ii/article/details/9991845多网卡的7种bond模式原理 Linux网卡绑定mode共有七种(~) bond0.bond1.b ...
- windows下上传shell脚本不能运行—将dos模式修改为unix 文件格式
windows下上传shell脚本至linux,其格式将为dos.dos模式的shell脚本将不能再linux下正确运行,需要修改文件模式为unix. 1 查看文件模式方法 linux服务器上,用vi ...
随机推荐
- C#MVC中创建多模块web应用程序
当一个应用程序有越来越多的子模块后,应用程序将变得越来越大,复杂度也越来越高,应用程序也越来越难维护.如果把每个子模块,独立分成不同的web应用程序,则这个项目将易于维护.关于这个的好处,我也描述得不 ...
- C# 8.0 预览特性
初试C# 8.0 Visual Studio 2019的第一个预览版(使用Visual Studio 2019提高每个开发人员的工作效率)和.NET Core 3.0(宣布.NET Core 3预览1 ...
- Delphi程序员如何找到高薪的工作?(赚不到钱,原因只有一个,就是他们没有被公司录取。Delphi必须要独自进行深入研究,才能精通,同时也不能自由性太强)
转帖自:http://www.tommstudio.com/ViewNews.aspx?ID=187http://hi.baidu.com/rarnu/blog/ 本文翻译自<美国优秀经理观念大 ...
- ElasticSearch的javaAPI之Client
翻译的原文:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/client.html#node-c ...
- redis 学习笔记——持久化
redis持久化 snapshot数据快照(rdb) 这是一种定时将redis内存中的数据写入磁盘文件的一种方案,这样保留这一时刻redis中的数据镜像,用于意外回滚.redis的snapshot的格 ...
- 使用QuickContactBadge关联联系人
QuickContactBadge继承了ImageView,因此它的本质也是图片,也可以通过android:src属性指定它显示的图片.QuickContackBadge额外功能是:该图片可以关联到手 ...
- End-to end provisioning of storage clouds
Embodiments discussed in this disclosure provide an integrated provisioning framework that automates ...
- Neo4j集群环境建设
简介: Neo4j它是目前的主流地图数据库.它本身提供了高可用性集群解决方案.本文将试图建立一个高可用性neo4j周围环境. 1. 这是一个地图数据库? 图形库(graphic database)问题 ...
- windows 路径
windows下的路径分隔符是\,而不是/ hosts文件的位置:C:\Windows\system32\drivers\etc 安卓(Android)用户:Android手机hosts文件路径:/s ...
- 微信公众平台消息接口开发(24)图片识别之人脸识别API
微信公众平台开发模式 微信 公众平台 消息接口 开发模式 企业微信公众平台 图片识别 人脸识别 API 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/archi ...