不说啥,看效果: 调用代码: ShowProgress(‘正在准备提交数据……’,0); Sleep(1000); ShowProgress(‘正在提交第一阶段数据……’,20); Sleep(1000); ShowProgress(‘正在提交第二阶段数据……’,50); Sleep(1000); Sho
月度归档: 2015 年 1 月
[FMX] TPopup 组件帮助的核心翻译
TPopup 用于在一个临时弹出窗口中显示内容(实际上可以用来弹出复杂的属性及编辑窗口)。默认情况下,一个 TPopup 是没有内容的,你可以添加一些对象到其中: 要添加一个控件到 TPopup ,设置它的 Parent 属性或者创建它时用 TPopup做为所有者。 要访问 TPopup 子对象,使用 Children
[FMX] Android 下模拟模态窗口(半透明效果)
FMX的 Android 平台下没有模态窗口的概念,具体原因俺就不清楚,也不多说。这里的模拟只是一种视觉效果上的模拟,并不是真正的模态窗口。先看一下效果: 点击 ShowDialog 按钮时,显示上显示了一个半透明的窗口,将背景覆盖了,然后设置了一些内容,请用户操作。 实际上要做的就是设置对话框窗口的几个属性: Fil
[不得闲作品]Delphi HTMLLayout/Sciter 封装
压缩包中包含两个, HTMLLayout 封装是完整的,Sciter 目前只包括了接口,没有封装成类,经作者同意发布给大家。 关于 HTMLLayout 的相关文章参考:Delphi下的HTMLLayout封装 压缩包下载:百度网盘 感谢不得闲!
用 Delphi/C++ Builder 调试 Andriod 程序时注意卸载掉 LBE 安全大师
早年用XE6的时候,没发现问题。最近简单写点程序调试,发现第一次安装没有问题,第二次修改后再安装运行,会停在启动画面没有响应。卸载后问题消失,如果出现类似问题,请大家卸载安全管理软件尝试下。
QWorker 更新 – 修正了已知的三处问题
【问题描述】 1、TQSimple.Clear函数在第一个就符合条件时,未设置 AFirst 值,造成 Repush 时,作业很可能丢失。 2、TQWorkers.Post、At 的 AInterval 参数值为负数时,会引起作业被立即循环处理,从而造成 CPU 占用率过高。 3、如果提交一个重复作业后,立即提交一个需
QString 中智能指针实现
在 Delphi 中要实现智能指针,实际上是一个挺麻烦的事。QString.pas 单元的 TQPtr 封装了一个智能指针的实现,它和一般的智能指针实现一样,利用了接口的自动管理特性。我们先看一下它的声明: IQPtr = interface(IInterface) function Get: Pointer; end
QString 更新 – 修正了昨天忘记保存 TQPtr.Bind 函数部分代码的问题
【更新内容】 昨天的 QString 单元中,智能指针 TQPtr.Bind 的三个重载实现忘记保存,造成无法使用相关的功能。具体使用方法请参考昨天发表的文章。 【更新级别】 推荐 【影响范围】 这个好象新的单元,所以对已有单元应该没啥影响,但象 QWorker 中,如果以后使用 jdfFreeAsInterface
[译]使用 FireMonkey 构建优秀专业 Android 应用的10点提示
原文链接:http://www.firemonkeyx.com/ten-tips-for-building-stunning-professional-android-apps-with-firemonkey/ 本文对原文有所精简。 # 1、使用 SSL 安全数据连接 如果在您的移动应用中使用的是 RESE 或 TId
[译] 获取 Andriod 中已经安装的应用程序列表
原文链接:http://www.fmxexpress.com/app-launcher-with-full-source-code-for-delphi-xe7-firemonkey-on-android 在 Andriod 上一个用户或 Delphi XE7 开发者不得不面对的问题是,如果你安装了太多的应用程序,那么
[译]在 Andriod/IOS 程序中使用自己的字体
原文链接:http://firemonkeyblog.blogspot.com/2014/12/using-custom-fonts-in-android-delphi.html 你应该能够在 Andriod 应用中使用任何 TrueType 字体。 示例使用了字符 Script MT Bold。这个字体在 Windo
基于 QWorker 的多线程编程 – 附加选项
一般来说,我们不需要对 QWorker 中 Workers 这个包工头干涉太多,但如果你想干涉它的行为,QWorker 还是提供了一些额外的途径的。 1、控制工作者的数量 默认情况下, 包工头为了节省开支,会为雇佣的工人数量设置一个上限和下限。默认情况下,下限为2,上限为逻辑 CPU 核心数量×2 +1,也就是说,对于
QXML 更新 – 增加了 Delete 函数的一个无参数重载用于删除结点自身
【更新说明】 增加了 Delete 函数的一个无参数重载用于删除结点自身,如果当前结点是根结点,则释放自身。 【更新级别】 可选 【特别感谢】 阿木
QJson 更新 – 增加了 Delete 函数的一个无参数重载用于删除结点自身
【更新说明】 增加了 Delete 函数的一个无参数重载用于删除结点自身,如果当前结点是根结点,则释放自身。 【更新级别】 可选 【特别感谢】 阿木
QMsgPack 更新 – 修正了 BytesToStream 忘记实际写入文件的问题
【问题描述】 调用 BytesToStream 将当前结点的值保存到流中时,没有调用 TMemoryStream.SaveToFile 写入到实际的文件,造成保存未起作用。 【更新说明】 增加了 Delete 函数的一个无参数重载用于删除结点自身,如果当前结点是根结点,则释放自身。 【严重程度】 高 【更新级别】 推荐
QWorker 更新 – 修正了 TQJobGroup.Cancel 造成 TQJobGroup.WaitFor/MsgWaitFor 陷入死循环的问题
【问题描述】 TQJobGroup 在执行 MsgWaitFor 或 WaitFor 时,如果中途取消作业,由于 Cancel 函数在全部取消成功,没有作业执行时没有触发事件,造成 MsgWaitFor/WaitFor 有可能会因为未等待事件信号而循环等待,造成程序无法退出的问题。 【严重级别】 高 【升级级别】 推荐
在代码中检查当前是否是 FireMonkey(FMX)程序
截止到 XE7 Update 1,Delphi 并没有提供一个条件编译选项来告诉当前程序是否是 FMX 平台的程序,而我们在做跨平台的应用时,许多时候需要知道这一点,那么我们该怎么办?QDAC 3.0 的 QString 单元提供了一个全局变量 IsFMXApp 来帮助用户检测这一点,它实际上是在初始化时,通过检查是否
基于 QWorker 的多线程编程 – 状态跟踪
当我们将一个作业的执行委托给 Workers 这个包工头以后,那么这个作业实际上就处于三种状态之一: 排队中:作业在队列中等待被调度执行 运行中:作业正在执行 已完成:作业已经执行完,此时作业及相关连的数据都已自动被释放 由于已经完成的作业会被释放掉,所以,实际上,我们能得到的状态只有排队中和运行中两种,第三种由于作业
基于 QWorker 的多线程编程 – For 并行
看到这个标题,你可能会感觉到疑惑:难道我们前面用 Post 或 TQJobGroup 提交的作业不是并行的吗?为什么又会冒出一个 For 并行? 首先,第一个问题的答案是:它们当然是并行的,但在特定的场合下,由于调度会引起一定的性能损失。 接下来,第二个问题的答案是:For 并行是在特定场合下的解决方案,它的目的是按指
基于 QWorker 的多线程编程 – 工作流控制
工作流(WorkFlow)是一个被炒了很久的东西,并出现了一些工作流引擎。那么,QWorker 是不是也能做一些这方面的工作呢?答案是显然的,QWorker 本身基于作业的特性,决定了它很适合完成一些普通的工作流管理任务。 工作流引擎实际上实现了两个部分的工作:流程的控制和作业的执行。工作流程的控制实际上可以分成顺序执