Duilib for Delphi Delphi 使用 Duilib 库

程序名称:Duilib for Delphi

授权协议: GPL

操作系统: Windows

开发语言: Delphi/Pascal

Duilib for Delphi 介绍

导读

什么是Duilib for Delphi? Duilib for
Delphi是一个基于C++Duilib的开源工程,主要致力于在Delphi中使用Duilib库构建漂亮的UI。

怎么学习?首先对Duilib有基本的了解,特别是XML构建的UI上,可以在网上查找duilib的文章,学习如何构建基于XML的UI,其次要有一定的Delphi基础,不然学起来会很麻烦。

是否跨平台? 不能跨平台,除非Duilib能跨平台了。

是否支持低版本Delphi,比如Delphi7? 已经支持D7


一、初衷

原本是看着Delphi一直是使用控件快速拖出来的界面,现存也未找到较好的UI与界面分离的库,
看着c++的那么多优秀的UI库,有时候也会“眼红”下的,因为一直喜欢Delphi,所以也一直希望在Delphi中也有这样一套UI库或者说使用这种,虽然说思想上偏离了Delphi原本的快速开发,但我觉得有时候不失为一种新的解决之道。

二、行动

于是去年利用周末的时间去翻译,因为原Duilib的库的代码太多了,所以翻译了几个单元之后就放弃了,没有这么多精力去完全翻译,于是另想到一种:既然不想翻译那就走调用他的路吧,可是原
duilib库是提供给c++用的,所以并没有直接使用的接口,只能自己改造下,一开始并没有成功,后来因为工作的原因就忘记这个东西了,今年突然又想起来这个事了,找到以前的代码,经过调试后发现以前没成功的原因,并用Delphi重写了部分原duilib
QQ界面的demo

三、现状

一直在寻找最快速的转换访求,中间不停的尝试着不同的方法,最后无懒选择了一种折中的办法,相对第一版要简单些,相对第二版又较麻烦些。由是代码实在太多了,就算第二种办法也需要花费大量的时间做基础工作,于是萌生了自动化的思想,花了几个小时写了一个转换工具,那晚一直写到大概快凌晨5点才睡觉。由于第一版的工具是一个说即做的产品,很多地方都是直接怎么简单就怎么写,效果也不是特别的好,调整也麻烦,于是抽了点时间重写了转换工具,这次的转换上质量高,基本转出来就能直接使用。但还有一点未开始做,不然也会增加翻译的工作量,根据c++的虚函数生成一个新的类,用来与Delphi交互用。
但愿后面补上这个功能。如果能更简单的话就直接生成Delphi的类,这样工作量减轻了至少80%。

四、不足之处

在关于类虚拟方式的重载问题上暂是没有好的办法,只能通过重写类,然后中转操作。另外hook方面也试过,还有想好有什么更好的办法(因为博主不想改动duilib的源代码而达到这种需求,此举是为了今后的升级作着想,另外有些方面也因为考虑升级不方便的问题而只能改用最直接的方式)。

Duilib for Delphi 官网

http://git.oschina.net/ying32/Duilib-for-Delphi

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


BlazeDS 是一个基于服务器的Java 远程控制(remoting)和Web消息传递(messaging)技术, 它能够使得后端的Java应用程序和运行在浏览器上的Adobe
OVal 是一个可扩展的Java对象数据验证框架,验证的规则可以通过配置文件、Annotation、POJOs 进行设定。可以使用纯 Java
Volta 是一套开发工具,专为开发分布式、实时系统应用。它包括级联,控制流分析工具,
OpenDDS 是一个开源的 C++ 实现的 对象管理组织 OMG 的 数据分布式服务 (DDS) 。OpenDDS利用自适应通信环境(ACE)提供一个跨平台的环境。
JADE (Java Agent DEvelopment Framework) 是一个完全用Java语言实现的软件框架。它通过一个兼容 FIPA
FastMM ,在D2006和2007中已代替了原来的内存管理器。
WebRTC 是一项在浏览器内部进行实时视频和音频通信的技术,是谷歌于2010年以6820万美元收购VoIP软件开发商 Global IT
gwtwiki - The Java Wikipedia API (Bliki engine),是一个 Wikipedia/Mediawiki 语法解析器,可以把 wiki 的文本转换成 HTML。它支持 wiki 标签,例如 bold, italic, headers, nowiki,
Esper 是一个复杂事件处理组件(CEP - Complex Event Processing),它有 Java 版本和 .NET 版本(NEsper)。
LuaTinker 的作者是Kwon-il Lee韩国人写的,最新的版本是0.2.C,这个C++ wrapper For Lua能够方便和
各种语言环境下gitignore文件的一个集合。
简介 ContentExtractor 是一个开源的网页正文抽取工具,用JAVA实现,具有非常高的抽取精度。
SwiftRandom 是一组函数集合,可以从不同的分布生成伪随机变量。 使用示例: //Single pseudorandom normal variable
java-linq-examples 是 101 个 LINQ 示例的 Java 移植版本。Android 兼容 Java 1.7. 此外还有以下语言移植版本:
mal,Make a Lisp,顾名思义,用图灵完备的编程语言写 Lisp 交互器,目前已经有35种不同语言的实现:
一个 Go 语言实现的中国行政区划查询工具。 介绍 最新中国行政区划,数据来源:http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201608/t20160809_1386477.html
Teaf 简介 Tencent Easy ACE Framework,基于 ACE 的高性能轻量级服务框架,单进程多线程模型,支持 select/epoll 等多种网络
介绍 让 Guzzle 支持 Swoole 协程,这个项目目的就是这么简单明了! Guzzle-Swoole 是 Guzzle 的处理器(Handler),并没有对 Guzzle 本身代码进行修改,理论上可以兼容后续版本。
goproxy-shell goproxy服务端部署脚本 使用方法 wget --no-check-certificate https://github.com/sjz123321/goproxy-
1. pyMd2Doc介紹(pip版本) 利用python将markdown转换成带可收缩、可跳转到文本内容的目录文档。