
【ZBar是什么】
ZBar 是一套全新设计的 Delphi 程序开发框架,目前版本包含以下内容
一、通讯组件部分
- znet.rest.client : 异步 REST 请求处理单元,主要特色:
- 底层支持 HTTP/HTTPS,可以通过 HOOK 额外支持 WebSocket 或 MQTT 等协议的请求回应
- 异步执行,不影响主线程代码执行,操作完成后回调仍然回退到主线程,让上层不再需要多线程同步处理
- 支持 RTTI 序列化和参数化两种访问模式
- 支持 HOOK 整个收发及处理结果过程,方便适配不同的 REST 服务器
- 支持多种认证模式
- 支持访问令牌在请求头部或参数中传递
- 自动增加请求ID参数,方便服务器端日志跟踪
- 支持超时处理
- 简洁易用接口定义
- znet.websocket.client : 异步 WebSocket 请求及处理单元,主要特色:
- 完整的 WebSocket 协议支持,包括利用 PING/PONG 自动保活
- 简单易用的接口及事件定义
- znet.http.cache : 基于 HTTP/HTTPS 协议的内容本地缓存实现 IZLocalCacheManager
- 按 URL 缓存内容
- 全异步调用
- 缓存过期管理
- 按 URL 查询缓存,并在缓存失效或者不存在时,通过 URL 来获取缓存内容
二、泛型和 RTTI 编程增强
- TZArray/TZSortedArray : 增强对数组类型的处理能力,包含对数据的排序、查找、合并、去重、求异、删除元素、字符串转化等等的额外处理,大大增强数组类型的处理能力
- TZSet : 对集合的处理类,通过它可以高效的数据进行去重处理,保障数据唯一性,主要用途:
- 存在性判断 : 用于判断一个元素是否已经在集合中存在
- 大量数据去重 : 去重后的结果,可以直接转换为数组
- TZMap : 就是 TDictionary , 这个没有做任何额外增强
- TZMultiMap : 一对多的字典类支持,通过将 TDictionary 的 TValue 转换为 TZLinkedList<TValue> 来将多个值放入链表存放,从而解决一对多的映射问题
- TZEventCastor : 事件广播支持,让单一事件通知可以有多个接收者
- TZLinkedList : 双向链表支持,完善 Delphi 本身没有双向链表
- TZSimpleInterface : 用于将一个对象、记录或其它简单类型接口化,避免单独定义接口及实现,如:TSimpleInterface<Integer> 可以实现将一个整数值绑定为一个接口,从而利用接口自动管理生命周期或适配其它需要接口的地方
- TZSimpleObject : 用于将一个非对象类型,简化封装为一个类,适用于一些适配场景,避免重复定义类型
- TZSingleton : 单例控制类,用于实现指定的实例单例化
- TZInstanceFreeMonitor : 监控对象实例的释放,可以用来在异步调用时,监控依赖的对象被释放,或者在依赖的对象被释放时,自动中止异步操作
- TZUtils : 一些常用的辅助增强函数
- IfThen : 如果条件成立,返回首个值,如果不成立,返回第二个值
- AssignIf : 类似于 IfThen,条件成立,将变量赋值,否则什么也不做,基于等价于 Value:=TZUtils.IfThen<TValue>(CanAssign,ANewValue,Value),但有更多重载且支持匿名函数回调
- AssignOnChange : 逻辑上等价于 Value:=IfThen(Value<>NewValue,NewValue,NewValue,Value),仅在值发生变更时进行赋值
- Dump : 将一个实例的值转换为 JSON 字符串输出,一般用于调试场景,更复杂的需求请直接使用 QJSON/System.JSON 等单元处理
- TryUtf8Decode : 尝试解码一个 UTF8 字符串
- Utf8Decode : 解码一个 UTF8 字符串,如果失败,则抛出异常
- Supports : System.Sysutils.Supports 的泛型化增强
- AsType : 用于将指定的接口或对象实例转换为指定的类型,如果失败,则返回空值。
- TZTextValidator : 一个文本校验封装类,可以正则、范围、列表等类型的值的快速校验
- 其它优化和增强 :
- QuickHash32 : 在 Windows 平台下使用汇编替代 System.Hash 里的 THashFNV1a32 算法,充分利用现代处理器的能力,完成内容的快速哈希(提供20X+),增强基于哈希类型的容器的处理能力。
- DebugLog : 用于在调试时,调用 DebugLogProc 来输出日志
- 动画增强控制函数及其它增强
三、UI 交互组件
- TZImageSlider : 基于 TGraphicControl 的轮播图实现,支持动画切入切出和手动切换
- TZTextButtonBar : 一个基于 TGraphicControl 的布局控制组件,强大超乎想像
- 内置以下类型元素支持:
- 按钮 (bkNormal) : 普通的按钮
- 数字编辑 (bkNumeric) : 只接受数字的单行编辑器
- 编辑器 (bkEdit) : 文本编辑框
- 单选框 (bkRadio) : 通过 GroupName/GlobalGroupName 来同步多个单选框的状态
- 复选框 (bkCheck)
- 下拉选择框 (bkDropDown)
- 换行 (bkBreak) : 强制在当前位置断行,后续内容切换到下一行显示
- 空白 (bkSpace) : 占位或对齐使用
- 纯文本 (bkText) : 文本标签
- 日期类型 (bkDate) : 日期选择
- 时间类型 (bkTime) : 时间选择
- 时间范围 (bkTimeRange) : 日期时间范围选择
- 顶部标签 (bkTopTab)
- 底部标签 (bkBottomTab)
- 开关 (bkSwitch)
- 弹出对话框 (bkPopup):会显示 … 的按钮,用于用户点击显示一个对话框
- 内置图标支持 : 可以在指定位置显示图标
- 内置进度条支持 : 可以直接在元素的指定位置显示进度条,进度条支持横向或纵向显示
- 内置附加标记图标(Marker) 支持,支持以下标记:
- Windows 窗口相关 : 最小化、最大化、还原、关闭、帮助和 Windows Logo
- Spins : 向前,向后,向上,向下,上下
- 导航支持 : 向前,向后,向下,向下,到低
- 媒体播放 : 播放、暂停、停止、录制、到头、到尾、快退、快进、静音
- 编辑 : 添加、编辑、删除、刷新、选择、剪切、不选
- 方向键 : 左、上、右、下、左上、右上、左下、右下
- 时间 : 1-12 小时
- 杂项: 设置、字体、信息、错误、问题、图表、图片、网络、聊天、广播、回收、打印机、软驱、下载、上传、笑脸、哭泣、省略号等
- 内置多达 18 种元素内容对齐方式支持
- 内置支持 9 种整体水平或垂直位置组合调整
- 内置分组聚合支持,可以将同一个布局分组 (LayoutGroup) 的元素合并 (自动重叠1px) ,让同一组的控制整体显示像是一个完整的控件。
- 内置下拉列表支持,文本内容可以跟随下拉选择或不跟随
- 内置自动弹出支持,可以轻松模拟菜单鼠标移入或移出效果,但由于程序不只是支持弹出菜单,还可以弹出复杂的窗体,所以显然更加高级强大
- 内置样式支持
- 支持五种状态样式单独定义:正常、鼠标移入、鼠标按下、选中、编辑中
- 可以共享样式和单独定义
- 可自定义以下样式内容
- 位图背景:支持6种绘制方式(适应尺寸、适应宽度、适应高度、缩放、平铺、9宫格缩放)
- 图形:内置多达34种图形支持,支持圆角矩形
- 标记图标设置
- 画笔设置
- 颜色设置
- 字体设置
- 边框设置
- 内置透明背景支持
- 内置按主题绘制支持
- 提供丰富的访问接口
- 内置弹出支持
- 支持按菜单方式弹出
- 支持弹出特定控件或窗体
- 内置滚动支持
- 内置多行文本支持
- 内置上下标支持
- 内置文本编辑支持
- 简洁易用的接口定义
- 还有更多特性,待您进一步了解
- 内置以下类型元素支持:
- TZMultiSourcePage : 一个支持多来源数据分页组件,用于从多个来源获取数据并且合并显示。比如您的数据分布在多个服务器,通过此控件,您可以从这些服务器分别获取一部分数据,然后组合在一起,呈现给用户。
- 支持跨接口、跨服务器分页
- 支持本地排序
- 支持与 TZPageNavigator 关联,控制页面跳转
- 支持前置和后置数据集,前置数据集放在所有的数据前面,后置数据集放在所有数据的后面。
- TZPageNavigator : 一个分页控件,可以控制跳页和设置分页大小
- TZWizardNavigator : 一个向导导航条
- TZDateBar/TZTimeBar/TZDateTimeBar : 日期/时间类型的选择条,只是一个对 TZTextButtonBar 的简单封装
- TZDialogs : 基于 TZTextButtonBar 实现的常用对话框增强
- InputText : 获取一行文本值
- InputMultiLineText : 获取一个多行文本值
- SelectItem/SelectRadioItem : 从列表中选择一个值
- SelectItems : 从列表中选择多个值
- CustomDialog : 用户自定义内容对话框
四、异步通讯及作业增强
此部分是基于 TZAsync 实现的一套完整的作业调度接口,支持作业的守护、分支、合并、跳转、取消等操作,在此简单将主要接口介绍如下:
- IZAsyncGuard : 异步操作守护者接口,提供异步调用首次进入和末次离开的回调,避免多次操作重复调用
- IZCancelableObject : 支持取消操作的异步调用对象接口
- IZAsyncInvoker : 异步调用的主接口,提供各种接口和作业的拆分组合跳转及参数传递支持
- IZAsyncExecutor : 异步作业执行器,用于调用实际的作业执行代码
- IZLoopIterator : 循环控制器,目的是将循环的执行碎片化,避免循环执行时无法执行其它代码。比如在前台线程执行一些空闲时处理的代码,如果需要较长时间的循环处理,则把这个循环切成碎片,避免影响用户响应
- IZComponentHelper : 用于监控组件的接口,可以避免组件在释放后,异步过程调用与原来组件相关的代码
此部分详情,请参考 zbar.async 单元的相关注释说明。
【定价包含的内容】
本价格包含上述所有组件和运行时内容,此价格包含源码。
本价格仅限测试用户专享,在测试完成后,购买正式版本的用户,不享受本价格。