zoukankan      html  css  js  c++  java
  • Delphi XE10让android的界面设计摆脱繁杂

    设计一个选项卡。

    最终效果图样:
    这里写图片描述
    操作步骤:
    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.
    

    本文转载于:http://www.cnblogs.com/wangorg/p/5130858.html

  • 相关阅读:
    (二分查找 拓展) leetcode 69. Sqrt(x)
    (二分查找 拓展) leetcode 162. Find Peak Element && lintcode 75. Find Peak Element
    (链表) lintcode 219. Insert Node in Sorted Linked List
    (二分查找 拓展) leetcode 34. Find First and Last Position of Element in Sorted Array && lintcode 61. Search for a Range
    (最短路 Floyd) P2910 [USACO08OPEN]寻宝之路Clear And Present Danger 洛谷
    (字符串 数组 递归 双指针) leetcode 344. Reverse String
    (二叉树 DFS 递归) leetcode 112. Path Sum
    (二叉树 DFS 递归) leetcode 101. Symmetric Tree
    (二叉树 递归) leetcode 144. Binary Tree Preorder Traversal
    (二叉树 递归 DFS) leetcode 100. Same Tree
  • 原文地址:https://www.cnblogs.com/xieyunc/p/9126500.html
Copyright © 2011-2022 走看看