Delphi for iOS开发指南(8):在iOS应用程序中使用Tab组件来显示分页
Delphi for iOS开发指南(8):在iOS应用程序中使用Tab组件来显示分页
在FireMonkey iOS应用程序中的Tab
Tab由FMX.TabControl.TTabControl定义,它是一个容器,用来包含一些Tab页:
- 每个Tab页可以包含任意UI元素。
- 你可以隐藏这些页,不用显示点按来切换Tab页。
对于每个Tab,你可以指定预先定义好的图片,也可以自定义图标,以及Text标签。
当然你也可以在控件的顶部或底部放置Tab。
使用Form Designer设计Tab页
要在应用程序中创建Tab页,按下面的步骤使用TTabControl组件:
1.创建一个HD FireMonkey Mobile Application,选择File>New>FireMonkeyMobile Application-Delphi>Blank Application。使用默认的iPhone目标平台(iOS Simulator)。
2.从Tool Palette中选择TTabControl:
3.在你拖放TTabControl之后,一个空的TabControl会显示在FireMonkey MobileForm Designer:
4.通常,应用程序使用TabControl的时候都是全屏显示页面的。你需要更改TTabControl的默认对齐方式,更改TabControl的Align属性为alClient:
5.右击TabControl,然后从弹出菜单中选择Items Editor…:
6.点击三次Add Item,以便创建一个TabItem的实例。关闭对话框。
7.在FireMonkey Mobile FormDesigner上,选择第一个TabItem,并更改它的StyleLookup属性为tabitembookmarks:
8.你可以在任意页面放置任何控件。为了移动到不同的页面,只需要在Form Designer上点击你想到的Tab,或在Object Inspector里改变ActiveTab属性:
9.为了改变Tab的位置,选择TabControl组件的TabPosition属性。每个Tab,你都可以在Object Inspector选择下列任意值:
自定义Tab图标
你可以通过下面这些步骤来给Tab页使用自定义图标和自定义标题。
1.放置一个TabControl,设置它的对齐(Align属性),然后为它创建几个Tab页。
2.选择一个Tab,然后在Object Inspector中,点击TTabItem中CustomIcon属性中的Bitmap字段的[…]省略号按钮:
3.从下拉菜单中选择Edit…:
4.在Bitmap Editor中,点击Load…按钮,选择一个PNG文件。普通方案建议尺寸为30*30,高级方案建议60*60(你在下一步用设置BitmapHiRes图标):
5.关闭Bitmap Editor,在Object Inspector中选中你想要使用的CustomIcon的BitmapHiRes(High-Resolution)字段。
6.在Object Inspector中将StyleLookup属性设置为tabitemcustom。
7.在Text属性里,更改Tab上的Text。
在本篇教程中所使用的自定义图片都放在你的$(BDS)\Images\GlyFX目录下。
在你定义好一个图标之后,FireMonkey框架根据给定的.png文件生成一个选中的图片和一个未选中的图片。这个转换由Bitmap Data的Alpha-Channel完成。例如:
在TabControl中放置控件
刚才讲过,每个Tab页可以包含任何数量的控件,包括另一个TabControl。在这种情况下,你可以在Structure View中方便的查看并管理不同的Tab页。
在运行时切换分页
通过用户点按Tab
如果Tab显示(当TabPosition设置成不是tpNone),用户可以简单的点按Tab来在分页之间进行切换。
通过Action和ActionList
Action绑定一个或多个用户界面元素,例如菜单项,工具条按钮,控件等。Action提供两个功能:
- Action提供用户界面元素的通用属性,例如控件是否可用或勾选框是否选中。
- Action响应控件触发,例如,当应用程序用户点击按钮或选中了菜单项。
这里是让用户通过点击按钮来移动到不同分页的实现步骤:
1.在FireMonkey Mobile应用程序中,放置一个TabControl,在上面放置一些Tab项(TabItem1,TabItem2,TabItem3)。
2.从Tool Palette中,添加一个TButton到窗体上,然后添加一个ActionList组件:
3.在Object Inspector中选择Button组件,然后从下拉菜单中选择Action|New StandardAction|Tab>TChangeTabAction。在用户点击这个按钮时,你刚才定义的Action就会被执行(Tab分页会切换):
4.在Structure View中选择ChangeTabAction1,然后在Object Inspector中选择TabItem2作为Tab属性的值,这个Action就可以将当前分页切换到TabItem2:
6.ChangeTabAction也支持Slide动态效果来表现分页之间的切换。为了使用它,设置Transition属性为ttSlide:
通过写代码
你可以使用下面几种方法来在代码中切换当前的分页:
- 将TTabItem的实例赋给ActiveTab属性:
- TabControl1.ActiveTab := TabItem1;
- 更改TabIndex的值。TabIndex属性是0开始的下标值(你可以使用0到TabControl1.TabCount-1之间的值)。
- TabControl1.TabIndex := 1;
- 如果定义了ChangeTabAction,你也可以从代码里执行这个Action:
- // You can set the target at run time if itis not defined yet.
- ChangeTabAction1.Tab := TabItem2;
- // Call the action
- ChangeTabAction1.Execute;
Delphi for iOS开发指南(8):在iOS应用程序中使用Tab组件来显示分页的更多相关文章
- Delphi for iOS开发指南(7):在iOS应用程序中使用WebBrowser组件
Delphi for iOS开发指南(7):在iOS应用程序中使用WebBrowser组件 在FireMonkey iOS应用程序中使用WebBrowser 在iOS平台上,FireMonkey使用T ...
- Delphi for iOS开发指南(6):在iOS应用程序中使用ComboBox组件来从列表中选择某一项
http://blog.csdn.net/delphiteacher/article/details/8924110 Delphi for iOS开发指南(6):在iOS应用程序中使用ComboBox ...
- Delphi for iOS开发指南(5):在iOS应用程序中使用Calendar组件来选择日期
http://blog.csdn.net/delphiteacher/article/details/8923519 在FireMonkey iOS应用程序中的Calendar FireMonkey使 ...
- Delphi for iOS开发指南(4):在iOS应用程序中使用不同风格的Button组件
http://blog.csdn.net/DelphiTeacher/article/details/8923481 在FireMonkey iOS应用程序中的按钮 FireMoneky定义了不同类型 ...
- Delphi for iOS开发指南(3):创建一个FireMonkey iOS应用程序
http://cache.baiducontent.com/c?m=9d78d513d9d431a94f9d92697d60c015134381132ba1d0020fa48449e3732b4b50 ...
- Delphi for iOS开发指南(1):在Mac上配置你的开发环境
http://cache.baiducontent.com/c?m=9d78d513d99516f11ab7cf690d678c3b584380122ba7a0020fd18438e4732b4050 ...
- 《iOS开发指南》要改iOS8版本了,听听您的意见?
<iOS开发指南>要改iOS8版本了,听听您的意见?参加问卷同学均可获得智捷课堂50元代金卡一张,同时抽取一名同学赠送即将出版的基于iOS8的<iOS开发指南>一本,欢迎大家填 ...
- 《iOS开发指南》正式出版-源码-样章-目录,欢迎大家提出宝贵意见
智捷iOS课堂-关东升老师最新作品:<iOS开发指南-从0基础到AppStore上线>正式出版了 iOS架构设计.iOS性能优化.iOS测试驱动.iOS调试.iOS团队协作版本控制.... ...
- 视频聊天插件:AnyChat使用攻略之iOS开发指南
AnyChat使用攻略之iOS开发指南 这套攻略主要指导刚开始使用AnyChat SDK For iOS的同学,快速搭建SDK环境,和实现音视频开发流程. (需要工程案例文件可联系我们) 在iOS平台 ...
随机推荐
- Jmeter分布式
Jmeter运行时十分耗CPU和内存,在实际应用中有时一台机器不能满足测试要求,这时就需要利用多台机器来进行分布式. Jmeter分布式的测试框架:框架中所有的测试脚本都要从测试主机传送到测试从机 ...
- android笔记:Service
服务:在后台运行,没有界面的组件. 服务生命周期如下: 两种启动方式: 1.startService(): onCreate()-->onStartCommand()-->onDestro ...
- Python3 bytes 函数
Python3 bytes 函数 Python3 内置函数 描述 bytes 函数返回一个新的 bytes 对象,该对象是一个 0 <= x < 256 区间内的整数不可变序列.它是 b ...
- CNN、RNN、DNN
一:神经网络 技术起源于上世纪五.六十年代,当时叫感知机(perceptron),包含有输入层.输出层和一个隐藏层.输入的特征向量通过隐藏层变换到达输出层,由输出层得到分类结果.但早期的单层感知机存在 ...
- C/C++堆、栈及静态数据区详解
转自:https://www.cnblogs.com/hanyonglu/archive/2011/04/12/2014212.html 做略微修改 C/C++堆.栈及静态数据区详解 本文介绍C ...
- ViewPager 带动画的欢迎界面
一般APP进去之后都会有几张图片来导航,这里就学习怎么在这张图片切换的时候添加切换动画效果 先看布局文件 activity_main.layout <?xml version="1.0 ...
- JSF控件的immediate属性和页面生命周期
JSF中的控件基本都有immediate属性,对于这个属性的使用总结如下,更详细内容可参考Oracle官方文档. 1,为了更好的理解immediate属性,先看一下JSF页面的生命周期: JSF页面的 ...
- Boost 库uuid 的使用
UUID 简介 通用唯一识别码(英语:Universally Unique Identifier,简称UUID)是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分. uuid 版 ...
- Struts2的拦截器技术
1. 拦截器的概述 * 拦截器就是AOP(Aspect-Oriented Programming,面向切面)的一种实现.(AOP是指用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作 ...
- (转)innodb 多版本并发控制原理详解
转自:https://blog.csdn.net/aoxida/article/details/50689619 多版本并发控制技术已经被广泛运用于各大数据库系统中,如Oracle,MS SQL Se ...