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 ...
随机推荐
- HeadFirst设计模式之装饰者模式
一. 1.The Decorator Pattern attaches additional responsibilities to an object dynamically.Decorators ...
- POJ1942——Paths on a Grid(组合数学)
Paths on a Grid DescriptionImagine you are attending your math lesson at school. Once again, you are ...
- 排查Java线上服务故障的方法和实例分析
前言 作为在线系统负责人或者是一个技术专家,你可能刚刚接手一个项目就需要处理紧急故障,或者被要求帮忙处理一些紧急的故障,这个时候的情景是: (1)你可能对这个业务仅仅是听说过,而不怎么真正了解: (2 ...
- python学习笔记六--用户自定义类
一.类: 1. 面向对象. 2. 定义了新的对象类型. 定义了两个属性:name,pay 定义了两个方法:lastName,giveRaise
- Vim Gtags插件
01.Gtags func:查看定义处 02.Gtags -r func:查看引用处 03.Gtags -s text:查看未被数据库定义的tags 04.copen:打开quick fix显示窗口 ...
- Fast scroller styles
<!-- Fast scroller styles --> <!-- Drawable to use as the fast scroll thumb. --> <att ...
- Linux下修改PATH的方法
Linux下修改PATH的方法 1.直接在命令行里敲 PATH=$PATH:/path1:/path2:/pathN用户登出之后PATH恢复原样. 只是临时起作用. 2.修改~目录下bash_prof ...
- poj1149
非常好的网络流 每个顾客分别用一个结点来表示. 对于每个猪圈的第一个顾客,从源点向他连一条边,容量就是该猪圈里的猪的初始数量 对于每个猪圈,假设有n个顾客打开过它,则对所有整数i∈[1, n),从该猪 ...
- [转] struts.xml配置详解
转自:http://www.cnblogs.com/fmricky/archive/2010/05/20/1740479.html struts.xml是我们在开发中利用率最高的文件,也是Struts ...
- 陈正冲老师讲c语言void关键字
1. void a void的字面意思是“空类型”,void *则为“空类型指针”,void *可以指向任何类型的数据. void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量 ...