[FMX]一个简单的进度对话框

  不说啥,看效果: 调用代码:

源码:

窗体定义:

 

[FMX] TPopup 组件帮助的核心翻译

TPopup 用于在一个临时弹出窗口中显示内容(实际上可以用来弹出复杂的属性及编辑窗口)。默认情况下,一个 TPopup 是没有内容的,你可以添加一些对象到其中: 要添加一个控件到 TPopup ,设置它的 Parent 属性或者创建它时用 TPopup做为所有者。 要访问 TPopup 子对象,使用 Children

[FMX] Android 下模拟模态窗口(半透明效果)

FMX的 Android 平台下没有模态窗口的概念,具体原因俺就不清楚,也不多说。这里的模拟只是一种视觉效果上的模拟,并不是真正的模态窗口。先看一下效果: 点击 ShowDialog 按钮时,显示上显示了一个半透明的窗口,将背景覆盖了,然后设置了一些内容,请用户操作。 实际上要做的就是设置对话框窗口的几个属性: Fil

QWorker 更新 – 修正了已知的三处问题

【问题描述】 1、TQSimple.Clear函数在第一个就符合条件时,未设置 AFirst 值,造成 Repush 时,作业很可能丢失。 2、TQWorkers.Post、At 的 AInterval 参数值为负数时,会引起作业被立即循环处理,从而造成 CPU 占用率过高。 3、如果提交一个重复作业后,立即提交一个需

QString 中智能指针实现

在 Delphi 中要实现智能指针,实际上是一个挺麻烦的事。QString.pas 单元的 TQPtr 封装了一个智能指针的实现,它和一般的智能指针实现一样,利用了接口的自动管理特性。我们先看一下它的声明:

在这里,我们主要用利用其中的类函数 Bind

QString 更新 – 修正了昨天忘记保存 TQPtr.Bind 函数部分代码的问题

【更新内容】 昨天的 QString 单元中,智能指针 TQPtr.Bind 的三个重载实现忘记保存,造成无法使用相关的功能。具体使用方法请参考昨天发表的文章。 【更新级别】 推荐 【影响范围】 这个好象新的单元,所以对已有单元应该没啥影响,但象 QWorker 中,如果以后使用 jdfFreeAsInterface

基于 QWorker 的多线程编程 – 附加选项

一般来说,我们不需要对 QWorker 中 Workers 这个包工头干涉太多,但如果你想干涉它的行为,QWorker 还是提供了一些额外的途径的。 1、控制工作者的数量 默认情况下, 包工头为了节省开支,会为雇佣的工人数量设置一个上限和下限。默认情况下,下限为2,上限为逻辑 CPU 核心数量×2 +1,也就是说,对于

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 本身基于作业的特性,决定了它很适合完成一些普通的工作流管理任务。 工作流引擎实际上实现了两个部分的工作:流程的控制和作业的执行。工作流程的控制实际上可以分成顺序执