Android实例-TTabControl的使用(XE8+小米2)

结果:
1.如果直接改变Tab的TabIndex,那样是没有动态效果的。如果想要动态效果需要用到ChangeTabAction1;
2.ChangeTabAction1可以直接为按钮指定Action这样不写代码,也可以支持动态效果。
3.ExecuteTarget是执行跳转功能,查看源代码,没有找到参数是做什么的。所以真心不明白里面的参数是什么意思。希望哪位前辈指点。
4.有人可能感觉出来了,为什么Android上的QQ、微信什么的手势都那么好用,而Delphi的有时不好使。其实不是这样的。那是因为Delphi中是直线向左、向右才识别。有关手势的我会重写文章说明,此文只是对Tab控件的功能介绍。
实例代码:
unit Unit1; interface uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.StdCtrls, FMX.ListBox, FMX.Layouts,
FMX.TabControl, System.Actions, FMX.ActnList, FMX.NumberBox, FMX.Edit,
FMX.EditBox, FMX.SpinBox, FMX.Gestures; type
TForm1 = class(TForm)
TabControl1: TTabControl;
Layout1: TLayout;
ComboBox1: TComboBox;
Label1: TLabel;
TabItem1: TTabItem;
TabItem2: TTabItem;
TabItem3: TTabItem;
TabItem4: TTabItem;
Button1: TButton;
Button2: TButton;
ActionList1: TActionList;
ChangeTabAction1: TChangeTabAction; //手动增加的Action
ChangeTabAction2: TChangeTabAction; //手动增加的Action
ChangeTabAction3: TChangeTabAction; //手动增加的Action
ChangeTabAction4: TChangeTabAction; //手动增加的Action
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button11: TButton;
Button12: TButton;
GestureManager1: TGestureManager; //手动增加的控件
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure TabControl1Gesture(Sender: TObject;
const EventInfo: TGestureEventInfo; var Handled: Boolean);
procedure FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.fmx}
{$R *.NmXhdpiPh.fmx ANDROID} //为了实现手势必须做的设置
procedure TForm1.FormCreate(Sender: TObject);
begin
//为Tab指定一个手势控件
TabControl1.Touch.GestureManager := GestureManager1;
//设置Tab控件支持的手势有哪些(如果这一项不设置,手势是没有反映的)
TabControl1.Touch.StandardGestures := [TStandardGesture.sgLeft, TStandardGesture.sgRight];
end; //Action上一页
procedure TForm1.Button11Click(Sender: TObject);
begin
if TabControl1.TabIndex > then
begin
ChangeTabAction1.Tab := TTabItem(Form1.FindComponent('TabItem' + IntToStr(TabControl1.TabIndex)));
ChangeTabAction1.ExecuteTarget(Self);
end;
end; //Action下一页
procedure TForm1.Button12Click(Sender: TObject);
begin
if TabControl1.TabIndex < TabControl1.TabCount - then
begin
ChangeTabAction1.Tab := TTabItem(Form1.FindComponent('TabItem' + IntToStr(TabControl1.TabIndex + )));
ChangeTabAction1.ExecuteTarget(Self);
end;
end; //Tab上一页
procedure TForm1.Button1Click(Sender: TObject);
begin
if TabControl1.TabIndex > then
begin
TabControl1.TabIndex := TabControl1.TabIndex - ;
end;
end; //Tab下一页
procedure TForm1.Button2Click(Sender: TObject);
begin
if TabControl1.TabIndex < TabControl1.TabCount - then
begin
TabControl1.TabIndex := TabControl1.TabIndex + ;
end;
end; //ExecuteTarget方法1
procedure TForm1.Button7Click(Sender: TObject);
begin
ChangeTabAction1.ExecuteTarget(self);
end; //ExecuteTarget方法2
procedure TForm1.Button8Click(Sender: TObject);
begin
ChangeTabAction1.ExecuteTarget(TabControl1);
end; procedure TForm1.ComboBox1Change(Sender: TObject);
begin
case ComboBox1.ItemIndex of
: TabControl1.TabPosition := TTabPosition.PlatformDefault;
: TabControl1.TabPosition := TTabPosition.Top;
: TabControl1.TabPosition := TTabPosition.Bottom;
: TabControl1.TabPosition := TTabPosition.None;
: TabControl1.TabPosition := TTabPosition.Dots;
end;
end; //利用手机的返回键实现Tab跳转
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
begin
if Key = vkHardwareBack then
begin
if TabControl1.TabIndex > then
begin
TabControl1.TabIndex := TabControl1.TabIndex - mod TabControl1.TabCount;
Key := ;
end;
end;
end; //利用手势实现Tab跳转
procedure TForm1.TabControl1Gesture(Sender: TObject;
const EventInfo: TGestureEventInfo; var Handled: Boolean);
begin
case EventInfo.GestureID of
sgiLeft:
begin
case TabControl1.TabIndex of
: ChangeTabAction2.ExecuteTarget(self);
: ChangeTabAction3.ExecuteTarget(self);
: ChangeTabAction4.ExecuteTarget(self);
end;
end;
sgiRight:
begin
case TabControl1.TabIndex of
: ChangeTabAction3.ExecuteTarget(self);
: ChangeTabAction2.ExecuteTarget(self);
: ChangeTabAction1.ExecuteTarget(self);
end;
end;
end;
Handled := True;
end; end.
Android实例-TTabControl的使用(XE8+小米2)的更多相关文章
- Android实例-OrientationSensor方向传感器(XE8+小米2)
相关资料: <修复 XE8 for Android 方向传感器 headingX,Y,Z 不会动的问题>:http://www.cnblogs.com/onechen/p/4497282. ...
- Android实例-读取设备联系人(XE8+小米2)
相关资料: http://www.colabug.com/thread-1071065-1-1.html 结果: 1.将权限打开Read contacts设置为True,不然报图一的错误. 2.搜索空 ...
- Android实例-设置消息提醒(XE8+小米2)
相关资料: 1.官网实例:http://docwiki.embarcadero.com/RADStudio/XE5/en/Mobile_Tutorial:_Using_the_Notification ...
- Android实例-闪光灯的控制(XE8+小米2)
unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Var ...
- Android实例-获取程序版本号(XE10+小米2)
相关资料: 383675978群号 实例源码: unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, Sy ...
- Android实例-调用系统APP(XE10+小米2)
相关资料:群号383675978 实例源码: unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, Sys ...
- Android实例-红外线操作(XE10.2+小米5)
相关资料: http://blog.csdn.net/qq_21752153/article/details/50244717https://developer.xamarin.com/api/typ ...
- Android实例-实现扫描二维码并生成二维码(XE8+小米5)
相关资料: 第三方资料太大没法写在博文上,请下载CSDN的程序包. 程序包下载: http://download.csdn.net/detail/zhujianqiangqq/9657186 注意事项 ...
- 45个android实例源码
分享45个android实例源码,很好很强大http://www.apkbus.com/android-20978-1-1.html andriod闹钟源代码http://www.apkbus.com ...
随机推荐
- linux踢人命令 pkill踢人用法
首先使用who命令查看在线用户,然后踢人. 强制踢人命令格式:pkill -kill -t tty 解释: pkill -kill -t 踢人命令 tty 所踢用户的TTY或者pts/x(x代表数字) ...
- MySQL提示:The server quit without updating PID file问题的解决办法
错误如下: [root@snsgou mysql]# service mysql restartMySQL server PID file could not be found![失败]Startin ...
- nginx负载均衡和反向代理有什么区别
近在研究nginx的负载均衡和反向代理,先看下这两个简单的配置吧! 负载均衡 worker_processes 1; events { worker_connections 1024; } http{ ...
- 易企秀 we+ Maka 兔展 四大H5页面制作工具
H5这个由HTML5简化而来的词汇,正通过微信广泛传播.H5是集文字.图片.音乐.视频.链接等多种形式的展示页面,丰富的控件.灵活的动画特效.强大的交互应用和数据分析,高速低价的实现信息传播,非常适合 ...
- [Unity菜鸟] 术语
HUD Mozilla Mozilla基金会,简称Mozilla(缩写MF或MoFo),是为支持和领导开源的Mozilla项目而设立的一个非营利组织. 称作Mozilla公司的子公司,雇佣了一些Mo ...
- android系统平台显示驱动开发简要:Samsung LCD接口篇『三』
平台信息: 内核:linux3.4.39系统:android4.4 平台:S5P4418(cortex a9) 作者:瘋耔(欢迎转载,请注明作者) 欢迎指正错误,共同学习.共同进步!! 关注博主新浪博 ...
- C#读取注册表信息
注册表是视窗系统的一个核心的数据库,在这个数据库中存放中与系统相关的各种参数,这些参数直接控制中系统的启动.硬件的驱动程序安装信息以及在视窗系统上运行的各种应用程序的注册信息等.这就意味着,如果注册表 ...
- 14条建议,使你的IT职业生涯更上一层楼
摘要:升值为企业IT部门的领导者,是大部分IT技术人员职业生涯的最终追求.但从一般大众中脱颖而出,并非易事.仅仅把本职工作干好远远不够,还需要IT技术人员展示出投身于技术发展的奉献精神及伴随技术发展而 ...
- [转] Android自动测试之monkeyrunner工具(二)
monkeyrunner工具 前言: 最近开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括android测试框架.CTS.Monkey.Monkeyru ...
- Android开发之异步消息处理机制Handler
更加详细的介绍Handler的博文-http://blog.csdn.net/guolin_blog/article/details/9991569 Android中的异步消息处理主要有四个部分组成, ...