02 2012 档案

摘要:上次说到我想为DirectUI增加脚本支持,今天我们就来研究下脚本的实现问题。虽然现在有了诸如AntLR、GOLD Parser、TP Lex and Yacc等等CC工具,大大方便了脚本引擎的开发,但我仍然觉得在这个框架里自己实现一套脚本引擎是件毫无意义的事。所以我决定使用现有的脚本引擎。事实上Delphi可用的第三方脚本引擎很多,这里列几个常见的:FastScript号称最快的Delphi脚本引擎,支持 VB、JS、Cpp、Pascal 语法,可以在脚本中使用自定义的类型和对象,内置了对Delphi VCL的支持。ifps/RemObjects PascalScript使用Pascal语法 阅读全文
posted @ 2012-02-23 19:35 Sephil 阅读(12034) 评论(5) 推荐(4)
摘要:工作需要开发的一套插件框架,给应用程序提供灵活的插件支持,基于Dll / Interface实现。先上个图这是个标准的基于插件的应用,下拉框里的就是由5个插件Dll提供的功能。主程序中定义了一个接口,而插件Dll则提供这个接口的实现。使用也很简单,在窗口上放置一个TExtensionManager组件,设置一下插件的读取路径就可以了。框架中有3个重要概念,ServiceHost,Module(模块)和扩展(Extension)1.ServiceHost是整个框架的灵魂,不管是主程序中还是插件中,都通过他来查询和使用其他的插件对象。下面是一段使用示例代码: (ServiceHost as ILo 阅读全文
posted @ 2012-02-22 23:52 Sephil 阅读(4060) 评论(7) 推荐(0)
摘要:最近公司开发的几个软件都需要支持皮肤,因此花了半个月做了一套皮肤引擎,也就是所谓的Direct UI,即控件都是画在窗体上的,只有容器窗体是有实际句柄的,子控件并非标准的Window。说说这套引擎的几个特性绘制效率尚可,至少图片很多时也没有发现有闪烁;支持的常用图片格式(BMP/JPG/PNG/GIF/ICON等),并支持图片透明;图片延迟载入,避免占用内存资源;皮肤支持多种存储格式,如ZIP打包、EXE内嵌资源等,要扩充新的格式也很方便;容器基于Delphi的TWinControl,例如你在窗口上放置一个Panel,只在这个Panel里使用皮肤;支持同时使用多个皮肤,比如Form1用一种皮肤 阅读全文
posted @ 2012-02-22 23:29 Sephil 阅读(7112) 评论(4) 推荐(0)