设计一个选项卡。
大体图样:
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.