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

  • 相关阅读:
    cmcc_simplerop
    WeiFenLuo.winFormsUI.Docking.dll的使用
    MySQL转换Oracle的七大注意事项
    icsharpcode
    详细介绍IIS7基于WAS 部署WCF服务《收藏》
    Win2008 IIS7日期格式更改方法 《转》
    SVCUtil使用说明(生成代理类)《收藏》
    Oracle中的高效语句
    WCF配置文件全攻略《收藏》
    设计高效合理的MySQL查询语句
  • 原文地址:https://www.cnblogs.com/xieyunc/p/9126500.html
Copyright © 2011-2022 走看看