delphi专题

《GOF设计模式》—桥接(BRIDGE)—Delphi源码示例:可移植的用户界面

 示例:可移植的用户界面 说明:   代码:   unit uWindow;   interface   uses Windows,SysUtils,Classes,Graphics;   type     TWindow = class;     TWindowImp = class;       {窗口视图}     TView = class

《GOF设计模式》—适配器(ADAPTER)—Delphi源码示例:可插入的Adapter(参数化的适配器)

 示例:可插入的Adapter(参数化的适配器) 实现: c)、参数化的适配器 用一个或多个模块对适配器进行参数化。模块构造支持无子类化的适配。一个模块可以匹配一个请求,并且适配器可以为每个请求存储一个模块。 在本例中意味着,TreeDisplay存储的一个模块用来将一个节点转化成为一个GraphicNode,另外一个模块用来存取一个节点的子节点。   例如,当对一个目录

《GOF设计模式》—适配器(ADAPTER)—Delphi源码示例:可插入的Adapter(使用代理对象)

 示例:可插入的Adapter(使用代理对象) 实现: b)、使用代理对象 在这种方法中,TreeDisplay将访问树结构的请求转发到代理对象。TreeDisplay的客户进行一些选择,并将这些选择提供给代理对象,这样客户就可以对适配加以控制,如下图所示。 例如,有一个DirectoryBrowser,它像前面一样使用TreeDisplay。DirectoryBrows

《GOF设计模式》—适配器(ADAPTER)—Delphi源码示例:可插入的Adapter(使用抽象操作)

 示例:可插入的Adapter(使用抽象操作) 说明: 当其他的类(如A)使用一个类(如C)时,如果所需的假定条件越少,这个类(如C)就更具可复用性。如果将接口匹配构建为一个类(如B),就不需要假定对其他的类可见的是一个相同的接口(如C接口)。也就是说,接口匹配使得我们可以将自己的类(如C)加入到一些现有的系统中去,而这些系统对这个类(如C)的接口可能会有所不同。 A  =〉 C

《GOF设计模式》—适配器(ADAPTER)—Delphi源码示例:绘图编辑器

 示例:绘图编辑器 说明: 有时,为复用而设计的工具箱类不能够被复用的原因仅仅是因为它的接口与专业应用领域所需要的接口不匹配。 例如,有一个绘图编辑器,这个编辑器允许用户绘制和排列基本图元(线、多边型和正 文等)、生成图片和图表。这个绘图编辑器的关键抽象是图形对象。图形对象有一个可编辑的形状,并可以绘制自身。图形对象的接口由一个称为Shape的抽象类定义。绘图编辑器为每一种图形对

《GOF设计模式》—适配器(ADAPTER)—Delphi源码示例:适配器接口

 示例:适配器接口 说明: (1)、定义 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 (2)、结构 对象匹配器依赖于对象组合,如下图所示。 目标Target:定义Client使用的与特定领域相关的接口。 适配器Adapter:对Adaptee的接口与Target接口进行适配。 被适配者A

《GOF设计模式》—抽象工厂(Abstract Factory)—Delphi源码示例:基于抽象工厂的迷宫

 示例:基于抽象工厂的迷宫   实现:     如果TMaze.Create是传递一个对象当作参数来建立rooms、walls及doors;如此你可以以不同的参数来改变rooms、walls及doors的类。  请注意MazeFactory也就是工厂方法(Factory Method)的一个集合;这是最通常实现抽象工厂模式的方式。同时请注意MazeFactory不是一个抽象类

《GOF设计模式》—原型(Prototype)—Delphi源码示例:原型接口

 示例:原型接口 说明: (1)、定义 用原型实例指定要创建对象的种类,并且通过拷贝这些原型实例创建新的同类对象。 (2)、结构 原型 Prototype:抽象原型,声明一个克隆自身的接口。 ConcretePrototype:具体原型,实现一个克隆自身的操作。 客户端 Client:让一个原型克隆自身从而创建一个新的对象。 代码: unit uProtot

《GOF设计模式》—原型(Prototype)—Delphi源码示例:浅拷贝和深拷贝

 示例:浅拷贝和深拷贝 说明: Prototype模式最困难的部分在于正确实现Clone操作。例如,当所考虑的类已经存在时就难以新增Clone操作。当类内部包括一些不支持拷贝或有循环引用的对象时,实现克隆可能会很困难。 大多数语言都对克隆对象提供了一些支持。例如,Smalltalk提供了一个copy的实现,它被所有Object的子类所继承。C++提供了一个拷贝构造器。但这些措施并不

delphi xe 之路(14)使用FireMonkeyStyle

FireMonkey使用Style来控制控件的显示方式。 每个控件都有一个StyleLookup属性,FireMonkey就是通过控件的这个属性来在当前窗体的StyleBook控件中查找匹配的Style,如果找到了这个Style,那么控件就使用这个Style来显示。   StyleBook是一个Style的集合,里面可以有窗体的Style,按钮的Style,文本框的Style,等等。

delphi 事务处理SQL语句

方法一(利用adoconnection.exe(sqlstate)): adoconnection1.begintrans;//开始事务 try  adoconnection1.execute(sqlstr1);  adoconnection1.execute(sqlstr2);  ...  adoconnection1.execute(sqlstrN);  adoconnection1.c

delphi日志模块代码

unit LOG_logging; interface uses   System.Win.ScktComp,  System.SysUtils, Winsock, Windows, System.Classes,   UGlobalvariable_type; type   TLOG_logging = class     txt: TextF

delphi 只允许运行一个实例的三种方法转

让程序只运行一个实例 Windows 下一个典型的特征就是多任务,我们可以同时打开多个窗口进行操作,也可以同时运行程序的多个实例,比如可以打开许多个资源管理器进行文件的移动复制操作。但有时出于某种考虑(比如安全性),我们要做出一些限制,让程序只能够运行一个实例。在Delphi编程中,笔者总结出了以下几种方法:   一、 查找窗口法   这是最为简单的一种方法。在程序运行前用FindWindo

delphi如何给按钮添加单键快捷键(F1~F12)

用action 讲按钮窗体的Keypreview设为True,然后加如下代码 Delphi/Pascal code ? 1 2 3 4 5 6 procedure  TForm1 . FormKeyDown(Sender: TObject;  var  Key:  Word ;    Shift: TShiftState); begin    i

delphi chrome cef3 控件学习笔记 (五)

一、模拟移动鼠标 //  SetCursorPos(StrToInt(Edit1.Text),StrToInt(Edit2.Text));  //相对屏幕位置   SetCursorPos(Self.Left+chrm1.Left+strtoint(Edit1.Text),Self.Top+chrm1.Top+strtoint(Edit2.Text));  //相对Chrm位置

delphi chrome cef3 控件学习笔记 (四)

一、遍历网页元素并点击js: 下面代码为找到淘宝宝贝页面,成交记录元素的代码: for(var i=0;i<document.getElementsByTagName("A").length;i++){var a;        var d=document.getElementsByTagName("A")[i];        var s=document.getElementsBy

delphi chrome cef3 控件学习笔记 (三)

Delphi与js的交互问题: 一、执行简单的JS 上一篇已经讲过: chrm1.browser.MainFrame.ExecuteJavaScript('alert("abc");','about:blank',0); chrm1.browser.MainFrame.ExecuteJavaScript('function aaa(){alert("abc");}aaa();','a

Delphi 中三种回调函数形式解析

Delphi 支持三种形式的回调函数: 全局函数这种方式几乎是所有的语言都支持的,类的静态函数也可以归为此类,它保存的只是一个函数的代码起始地址指针( Pointer )。在 Delphi 中声明一般为: 1 TXXX = procedure / function (参数列表 ) ; 类的成员函数类的成员函数作为回调函数,与全局函数相比,需要关联具体的类的实例,所以它

一个功能增强的Delphi TListView组件——TSmartListView

unit SmartListView;  {* |<PRE>  ================================================================================  * 单元名称:TSmartListView v1.01  * 单元作者:HsuChong@hotmail.com  * 备    注:  * 开发平台:PWin2003St

Delphi XE10,Json 生成和解析,再利用indyhttp控件Post

--不多说,直接上代码 procedure TFrmMain.Brand; var   JSONObject, jsonparam: TJSONObject; // JSON类   jsonArray: TJSONArray; // JSON数组变量   i: Integer;   Flag_Do: Boolean;   jsonToSend: TStringStream;   jsonStr,

Delphi Dll中传递Pchar类型参数是否需要加var

比如原来有个函数是这样的: procedure GetMsg(ret: Integer; var Msg: string); stdcall; //返回消息 begin   Msg := 'OK'; end; 现在改成这样: procedure GetMsg(ret: Integer; var Msg: PChar); stdcall; //返回消息 begin   StrPCopy(Msg, '

Delphi XE6 原生解析json

Delphi XE5带了system.json单元,原生提供了json支持类。下面是解析json用法说明:最简单的JSON大致像这样 {"date":"周二(今天, 实时:12℃)","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/duoyun.png","nightPictureUrl":"http://api.

delphi : 窗体的close,free,destroy的区别

一、我用application.create(TForm2,Form2)语句,创建了Form2,可是调用了Form2.close后,重新调用Form2.show. 刚才所创建的Form2仍然存在。问为了节约资源,应该怎样使用close,free,destroy. 三者的关系是什么? 1、Action:=caFree。 2、 with TForm1.Create(Application) do

Delphi接口学习

前不久,有位搞软件的朋友给我出了个谜语。谜面是“相亲”,让我猜一软件术语。我大约想了一分钟,猜 出谜底是“面向对象”。我觉得挺有趣,灵机一动想了一个谜语回敬他。谜面是“吻”,也让他猜一软件术 语。一分钟之后,他风趣地说:“你在面向你美丽的对象时,当然忍不住要和她接口!”。我们同时哈哈大 笑起来。谈笑间,似乎我们与自己的程序之间的感情又深了一层。对我们来说,软件就是生活。     第一节

Delphi常用架构开源资源汇总

1、eMVC http://sourceforge.net/projects/emvc/ 2、MVVM https://github.com/apress/mvvm-in-delphi 3、MVC https://github.com/danieleteti/delphimvcframework

Delphi入门

Delphi入门 一、初识1.单元文件1.1 interface部分1.2 implementation部分1.3 initialization部分1.4 finalization部分 二、基本数据类型1.定义一个变量1.1 变量的声明1.2 变量的赋值1.3 变量的定义 2.定义一个常量3.定义一个枚举类型4.定义一个子界5.定义一个集合5.1 集合的赋值5.2 集合的并交差运算5.3