表示: Delphi C++
表示設定

FireMonkey のプリミティブ コントロールとスタイル付きコントロール

提供:RAD Studio
移動: 案内, 検索

FireMonkey コンポーネント ガイド への移動

目次

プリミティブ コントロール

FireMonkey のプリミティブ コントロールは FMX.Objects.TShape を継承しているため、自分自身の描画方法がわかっています。描画は Paint メソッドで行われますが、このメソッドは FMX.Controls.TControl に導入されており、各プリミティブ コントロールで上書きされます。

プリミティブ コントロールのルック アンド フィールは、FillStrokeStrokeCapStrokeDashStrokeJoinStrokeThickness といった、それ自身のプロパティで定義されます。

FireMonkey プリミティブ コントロールは以下のとおりです。

FireMonkey のプリミティブ コントロールを作成する」では、独自の FireMonkey プリミティブ コントロールを作成する手順を示しています。

スタイル付きコントロール

FireMonkey のスタイル付きコントロールは、アプリケーションのルック アンド フィールを定義するものではありません。そうではなく、これらはスタイル ファイル(またはスタイルブック コンポーネントで定義されているスタイル)を読み込み、プリミティブ コントロールとそれらのプロパティのリストを動的に選択します。したがって、スタイル付きコントロールは、アプリケーションが新しいスタイルに切り替えたとき(新しいスタイル定義を読み込んだとき)にルック アンド フィールを変更できます。

スタイル付きコントロールは、プリミティブ コントロール、スタイル付きコントロール、効果を任意に組み合わせて作成することができます。たとえば、FMX.StdCtrls.TCheckBox は以下のプリミティブ コントロールと効果から作成されています。

  • TLayout(CheckBoxstyle)
    • TLayout
      • TRectangle(背景)
        • TGlowEffect
        • TRectangle
        • TRectangle
        • TColorAnimation
        • TColorAnimation
        • TPath(チェック マーク)
          • TColorAnimation
      • TText(テキスト)

スタイル付きコントロールが読み込まれると、StyleName('<クラス名>style')のオブジェクトが読み込まれます。その後、コントロールのインスタンスが作成されます。以下に例を示します。

 object TLayout
     StyleName = 'checkboxstyle'
     Position.Point = '(352,391)'
     Width = 121.000000000000000000
     Height = 21.000000000000000000
     DesignVisible = False
     object TLayout
       Align = alLeft
       Width = 20.000000000000000000
       Height = 21.000000000000000000
       object TRectangle
         StyleName = 'background'
         Align = alCenter
         Position.Point = '(3,4)'
         Locked = True
         Width = 13.000000000000000000
         Height = 13.000000000000000000
         HitTest = False
         Fill.Color = xFFEFEFEF
         Stroke.Kind = bkNone
         object TGlowEffect
           Trigger = 'IsFocused=true'
           Enabled = False
           Softness = 0.200000002980232200
           GlowColor = x82005ACC
           Opacity = 0.899999976158142100
         end
         object TRectangle
           Align = alContents
           Locked = True
           Width = 13.000000000000000000
           Height = 13.000000000000000000
           HitTest = False
           Fill.Kind = bkGradient
           Fill.Gradient.Points = <
             item
               Color = x5FA7A7A7
             end
             item
               Color = x5FFFFFFF
               Offset = 1.000000000000000000
             end>
           Stroke.Color = x90404040
         end
         object TRectangle
           Align = alContents
           Position.Point = '(2,2)'
           Locked = True
           Width = 9.000000000000000000
           Height = 9.000000000000000000
           Padding.Rect = '(2,2,2,2)'
           HitTest = False
           Fill.Kind = bkNone
           Stroke.Color = x30505050
         end
         object TColorAnimation
           Duration = 0.100000001490116100
           Trigger = 'IsMouseOver=true'
           StartValue = xFFEFEFEF
           StopValue = xFFA5D9FF
           PropertyName = 'Fill.Color'
         end
         object TColorAnimation
           Duration = 0.100000001490116100
           Inverse = True
           Trigger = 'IsMouseOver=false'
           StartValue = xFFEFEFEF
           StopValue = xFFA5D9FF
           PropertyName = 'Fill.Color'
         end
         object TPath
           StyleName = 'checkmark'
           Align = alCenter
           Position.Point = '(2,2)'
           Locked = True
           Width = 9.000000000000000000
           Height = 9.000000000000000000
           HitTest = False
           Fill.Color = claNull
           Stroke.Kind = bkNone
           Data.Path = {
             1200000000000000000000000000000001000000CDCC4C3E0000000001000000
             0000003F9A99993E01000000CDCC4C3F00000000010000000000803F00000000
             010000000000803FCDCC4C3E010000003333333F0000003F010000000000803F
             CDCC4C3F010000000000803F0000803F01000000CDCC4C3F0000803F01000000
             0000003F3333333F01000000CDCC4C3E0000803F01000000000000000000803F
             0100000000000000CDCC4C3F010000009A99993E0000003F0100000000000000
             CDCC4C3E010000000000000000000000030000000000000000000000}
           object TColorAnimation
             Duration = 0.100000001490116100
             Trigger = 'IsChecked=true'
             TriggerInverse = 'IsChecked=false'
             StartValue = x00034E9E
             StopValue = xFF034E9E
             PropertyName = 'Fill.Color'
           end
         end
       end
     end
     object TText
       StyleName = 'text'
       Align = alClient
       Position.Point = '(21,2)'
       Locked = True
       Width = 99.000000000000000000
       Height = 19.000000000000000000
       Padding.Rect = '(1,2,1,0)'
       HitTest = False
       Text = 'CheckBox'
     end
   end

関連項目

他言語版