您的位置:首页 > 编程语言 > Delphi

Delphi XE10让android的界面设计摆脱繁杂

2016-01-14 17:18 357 查看
设计一个选项卡。

大体图样:



1、创建一个multi_Device_Application;2、在form上放一个Rectangle1,设置align为top。设置fill属性的kind为Gradient,编辑Gradient(颜色取值见样图)。3、再放一个Rectange2设置align为top,底色为白色。4、在Rectange2上放置三个RoundRect1,RoundRect2,RoundRect3。设置它们的Corners属性的TopLeft和TopRight为TURE,BottomLeft和BottomRight为FALSE,则圆角出现了。然后分别设置它们的Fill属性。5、放置一个Tabcontrol控件,设置TopPostion为None;align为client。6、设置RoundRect1,RoundRect2,RoundRect3的tag属性分别为:1,2,3

直接上代码:

unit TabbedTemplate;

interface

uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.TabControl,
FMX.StdCtrls, FMX.Gestures, FMX.Controls.Presentation, FMX.Objects, FMX.Ani;

type
TTabbedForm = class(TForm)
HeaderToolBar: TToolBar;
ToolBarLabel: TLabel;
TabControl1: TTabControl;
TabItem1: TTabItem;
TabItem2: TTabItem;
TabItem3: TTabItem;
GestureManager1: TGestureManager;
Label2: TLabel;
Label3: TLabel;
Rectangle1: TRectangle;
TabPanel: TPanel;
Line1: TLine;
RoundRect1: TRoundRect;
RoundRect2: TRoundRect;
Label5: TLabel;
Label6: TLabel;
RoundRect3: TRoundRect;
Label7: TLabel;
Rectangle2: TRectangle;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormGesture(Sender: TObject; const EventInfo: TGestureEventInfo;
var Handled: Boolean);
procedure TabControl1Gesture(Sender: TObject;
const EventInfo: TGestureEventInfo; var Handled: Boolean);
procedure TabHeadrOnClick(Sender: TObject);
private
{ Private declarations }
CurTabIndex:integer;

public
{ Public declarations }
end;

var
TabbedForm: TTabbedForm;

implementation

{$R *.fmx}

procedure TTabbedForm.TabHeadrOnClick(Sender: TObject);
var
ClickTag:integer;
i:integer;

begin
if (Sender is TLabel) then
begin
ClickTag:=Tlabel(sender).Tag
end
else
if (Sender is TRoundRect) then
begin
ClickTag:=TRoundRect(Sender).Tag;
end;

if ClickTag<>CurTabIndex then
begin
for I := 0 to self.ComponentCount-1 do
begin
if (self.Components[i] is TRoundRect) then
begin
TRoundRect(self.Components[i]).Fill.Kind:=TBrushKind.Gradient;
TRoundRect(self.Components[i]).Fill.Gradient.Color:= TAlphaColor($FFE2E4E4);
TRoundRect(self.Components[i]).Fill.Gradient.Color1:=TAlphaColor($FFFFFFFF);
TRoundRect(self.Components[i]).Fill.Gradient.Style:=TGradientStyle.Linear;
TRoundRect(self.Components[i]).Stroke.Kind:=TBrushKind.None;
end;
end;
TabControl1.ActiveTab:=TabControl1.Tabs[ClickTag-1];;
CurTabIndex:=ClickTag;
TRoundRect(sender).Fill.Kind:=TBrushKind.Solid;
TRoundRect(Sender).Fill.Color:= TAlphaColorRec.Lightskyblue;
TRoundRect(Sender).Stroke.Kind:=TBrushKind.Solid;
TRoundRect(sender).stroke.Color:=TAlphaColorRec.Lightblue;
end;
end;

procedure TTabbedForm.FormCreate(Sender: TObject);
begin
{ This defines the default active tab at runtime }
TabControl1.ActiveTab := TabItem1;
CurTabIndex:=1;
end;

procedure TTabbedForm.FormGesture(Sender: TObject;
const EventInfo: TGestureEventInfo; var Handled: Boolean);
begin
{$IFDEF ANDROID}
case EventInfo.GestureID of
sgiLeft:
begin
if TabControl1.ActiveTab <> TabControl1.Tabs[TabControl1.TabCount-1] then
begin
TabControl1.ActiveTab := TabControl1.Tabs[TabControl1.TabIndex+1];
Handled := True;
end;
end;

sgiRight:
begin
if TabControl1.ActiveTab <> TabControl1.Tabs[0] then
begin
TabControl1.ActiveTab := TabControl1.Tabs[TabControl1.TabIndex-1];
Handled := True;
end;
end;
end;
{$ENDIF}
end;

procedure TTabbedForm.TabControl1Gesture(Sender: TObject;
const EventInfo: TGestureEventInfo; var Handled: Boolean);
begin
case EventInfo.GestureID of
sgiRight:
begin
TabControl1.Previous();
Handled:=True;
end;
sgiLeft:
begin
TabControl1.Next();
Handled:=True;
end;
end;
end;

end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: