ChinaCock界面控件介绍-CCNavigateTitle

先看一下实际项目中的运行效果,如图,通过品牌的导航栏,显示不同品牌的商品列表。
完全基于ChinaCock控件包中CCNavigateTitle组件实现的,这是一个可视控件,从组件面板上拖放一个到Form上,然后做如下设置:
object CCNavigateTitle1: TCCNavigateTitle
Align = Top Appearence.IndicatorFill.Color = claCadetblue
Appearence.IndicatorStroke.Color = claCadetblue
Appearence.NomalItemTextSettings.FontColor = claCadetblue
Appearence.NomalItemTextSettings.HorzAlign = Center
Appearence.SelectedItemTextSettings.FontColor = claWhite
Appearence.SelectedItemTextSettings.HorzAlign = Center
end
可以看到,对齐方式设置为Top,再通过外观属性设置显示的样式,这样才能更好的适应整体app风格。
接下来,把品牌数据集中的内容,填加到CCNavigateTitle1:
procedure TGoodsDoc.InitBrand;
begin
CCNavigateTitle1.OnActiveItemChanged := nil;//初始化显示内容时不触发 OnActiveItemChanged事件
CCNavigateTitle1.BeginUpdate;
try
CCNavigateTitle1.Items.Clear;//清除所有内容
FBrandDataSet.First;
while not FBrandDataSet.Eof do
begin
with CCNavigateTitle1.Items.Add do//增加一个品牌
begin
ID := FBrandDataSet.FieldByName('FCode').AsString;//品牌编号
Text := FBrandDataSet.FieldByName('FName').AsString;//品牌名称
end;
FBrandDataSet.Next;
end;
finally
CCNavigateTitle1.EndUpdate;
CCNavigateTitle1.ActiveItemIndex := ; //默认显示第一个
CCNavigateTitle1.OnActiveItemChanged := Self.CCNavigateTitle1ActiveItemChanged;//初始化后允许触发 OnActiveItemChanged事件
end;
end;
上面的代码就是循环一个数据集,每条记录做为一个品牌填加到CCNavigateTitle。接下来,实现用户点击CCNavigateTitle中的品牌时,显示对应的商品:
procedure TGoodsDoc.CCNavigateTitle1ActiveItemChanged(Sender: TObject;
APreviousItem, AActiveItem: TCCNavigateTitleItem);
begin
inherited;
if not Assigned(APreviousItem) then Exit; FBrandDataSet.Locate('FCode', AActiveItem.ID, []);
QueryBrand(AActiveItem.ID);//按品牌查询商品并利用Listview显示 end;
这里有一个小问题要注意,就是在调用InitBrand时,尽管避免触发 OnActiveItemChanged事件,但实际上因为动画延迟的原因,还是会触发该事件,所以这里使用了这行代码来避免:
if not Assigned(APreviousItem) then Exit;
上面的实现,是运行期动态为CCNavigateTitle加载的导航内容,实际上,作者还提供了Items属性,利用他可以在IDE中直接填写导航栏的内容。
也许你要问,这个控件什么情况下需要用他来实现界面呢?
一句话:你要导航的内容超过屏幕的显示宽度。
为什么?因为CCNavigateTitle支持手势的左右滑动,用户可以左右滑动,来显示看不到的内容。

上图是这个控件的属性面版,主要的属性来标记出来了。用起来非常简单,效果确是专家级的!谁用谁知道了!
ChinaCock界面控件介绍-CCNavigateTitle的更多相关文章
- ChinaCock界面控件介绍-CCLoadingIndicator
这是一个显示等待状态的控件,当在线程中执行一个稍长时间的任务,需要显示一个等待过程,免得让用户不知app在做什么?避免用户寂寞. 先看看这个控件的属性说明: BackgroundTransparenc ...
- ChinaCock界面控件介绍-TCCYearMonthSelector
Delphi原生控件支持日期的选择,但对于只选择年月的情况,则没有好的实现.TCCYearMonthSelector正是为解决这个问题而产生的.看看运行效果图: 用法一如即往的简单,这是一个不可视控件 ...
- ChinaCock界面控件介绍-TCCImageViewerForm
有多个图片,左右滑动可以切换,通过手势还可以放大.缩小查看,象常见的相册,就是这样子实现效果. 现在,我们有了TCCImageViewerForm组件,也可以轻松实现这样的场景应用. 现在看看TCCI ...
- ChinaCock界面控件介绍-CCButton
即将发布的ChinaCock新版本,将带来一个CCButton控件,实现可视按钮.Delphi原生的Button,在上面滑动后,当释放手指时会误触发OnClick事件,这不是我们想要的结果,CCBut ...
- ChinaCock界面控件介绍-CCSystemBar
Android 4.4之后谷歌提供了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 身临其境 的体验.而A ...
- ChinaCock界面控件介绍-TCCBarcodeCreator
条码生成器,可以生成各种条码,包括二维码.这是一个不可视控件.用起来依旧简单. 属性说明: BarCodeColor:生成条码的颜色 BarcodeFormat:生成条码的类型,支持的条码类型: Bo ...
- ChinaCock界面控件介绍-CCGridPictureEditor
CCGridPictureEditor如其名,网格图片编辑控件,实现利用一个网格来显示多张图片的缩略图,这是一个非常实用的控件,实现类似微信朋友圈中发布多张图片的功能. 在没有这个控件之前,我都是用D ...
- ChinaCock界面控件介绍-CCNewsSilder
上图是控件包里的Demo运行效果,轮播新闻图片. 这个控件用起来简单,拖放一个CCNewsSiler到Form上,设置Align为Top,再设置好高度,然后用代码加载图片: procedure TFo ...
- ChinaCock打印控件介绍-TCCFujitsuPrinter实现蓝牙针式打印
项目中遇到,要蓝牙针式打印机,用手机打印表单.感谢专家,对厂家提供的SDK进行了封装,实现利用Delphi开发出这一功能. 现在来看看,如何利用这一控件实现打印过程: procedure startS ...
随机推荐
- 【洛谷p2669】【一本通p1100】金币
(今天高产) 金币[传送门] 洛谷上的算法标签 自我感觉主要靠循环 这道题是2015年NOIp普及组的题,其实还是很简单的.但为什么写这道题呢? 这道题第一次接触是在一本通刷题的时候,当时学循环结构, ...
- SQL SERVER pivot(行转列),unpivot(列转行)
[pivot]行转列:多行变一列 假设学生成绩表Score1 Name Subject Score 小张 语文 88 小花 数学 89 小张 数学 90 Name 语文 数学 小花 null 89 小 ...
- python记录_day23 正则表达式 re模块
一. 正则表达式 使用python的re模块之前应该对正则表达式有一定的了解 正则表达式是对字符串操作的一种逻辑公式.我们一般使用正则表达式对字符串进行匹配和过滤. 正则的优缺点: 优点:灵活, 功能 ...
- Web App和Native App的比较
一.Web App vs. Native App 比起手机App,网站有一些明显的优点. 跨平台:所有系统都能运行 免安装:打开浏览器,就能使用 快速部署:升级只需在服务器更新代码 超链接:可以与其他 ...
- python-flask-Flask-SQLAlchemy与Flask-Migrate联合进行数据化迁移
使用步骤: 1. 引入Flask-SQLAlchemy from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() 2. 注册 Flask-SQ ...
- DBMS_ROWID定位数据行物理存储位置
对于Oracle中的堆表,我们可以通过oracle内置的ROWID伪列得到对应行记录所在的ROWID的值(注意,这个ROWID只是一个伪列,实际的块中并不存在该列).然后我们可以通过DBMS_ROWI ...
- 【LeetCode】最大子序列和
要求时间复杂度 O(n). e.g. 给定数组 [-2,1,-3,4,-1,2,1,-5,4],其中有连续子序列 [4,-1,2,1] 和最大为 6. 我完全没有想法,看了答案. C++实现: int ...
- openfiler简介
Openfiler 1. 简介 Openfiler可以将一个工业标准的X86_64的架构系统转换为一个完全成熟的NAS/SAN存储设备或IP存储路由,并为存储管理者提供一个解决正快速成长 ...
- [转]java nio解决半包 粘包问题
java nio解决半包 粘包问题 NIO socket是非阻塞的通讯模式,与IO阻塞式的通讯不同点在于NIO的数据要通过channel放到一个缓存池ByteBuffer中,然后再从这个缓存池中读出数 ...
- summary_22rd Nov 2018
一. 列表:记录同种属性的多个值 定义:在[]中用逗号分隔开多个任意的值 类型转换:L=list( ) 括号中的内容必须是可迭代类型,包括字符串,列表,字典等 常用操作和内置方法: 1.按照索引位置 ...