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

提供: Appmethod Topics
移動先: 案内検索

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 = '<classname>style'
で読み込まれます。その後、コントロールが構築されます。 例:

objectTLayout
StyleName = 'checkboxstyle'
Position.Point = '(352,391)'
    Width = 121.000000000000000000
    Height = 21.000000000000000000
objectTLayout
      Align = Left
      Width = 20.000000000000000000
      Height = 21.000000000000000000
objectTRectangle
StyleName = 'background'
        Align = Center
Position.Point = '(3,4)'
        Locked = True
        Width = 13.000000000000000000
        Height = 13.000000000000000000
HitTest = False
Fill.Color = xFFEFEFEF
Stroke.Kind = None
objectTGlowEffect
          Trigger = 'IsFocused=true'
          Enabled = False
          Softness = 0.200000002980232200
GlowColor = x82005ACC
          Opacity = 0.899999976158142100
end
objectTRectangle
          Align = Contents
          Locked = True
          Width = 13.000000000000000000
          Height = 13.000000000000000000
HitTest = False
Fill.Kind = Gradient
Fill.Gradient.Points = <
item
              Color = x5FA7A7A7
end
item
              Color = x5FFFFFFF
              Offset = 1.000000000000000000
end>
Stroke.Color = x90404040
end
objectTRectangle
          Align = Contents
Position.Point = '(2,2)'
          Locked = True
          Width = 9.000000000000000000
          Height = 9.000000000000000000
Padding.Rect = '(2,2,2,2)'
HitTest = False
Fill.Kind = None
Stroke.Color = x30505050
end
objectTColorAnimation
          Duration = 0.100000001490116100
          Trigger = 'IsMouseOver=true'
StartValue = xFFEFEFEF
StopValue = xFFA5D9FF
PropertyName = 'Fill.Color'
end
objectTColorAnimation
          Duration = 0.100000001490116100
          Inverse = True
          Trigger = 'IsMouseOver=false'
StartValue = xFFEFEFEF
StopValue = xFFA5D9FF
PropertyName = 'Fill.Color'
end
objectTPath
StyleName = 'checkmark'
          Align = Center
Position.Point = '(2,2)'
          Locked = True
          Width = 9.000000000000000000
          Height = 9.000000000000000000
HitTest = False
Fill.Color = claNull
Stroke.Kind = None
Data.Path = {
            1200000000000000000000000000000001000000CDCC4C3E0000000001000000
            0000003F9A99993E01000000CDCC4C3F00000000010000000000803F00000000
            010000000000803FCDCC4C3E010000003333333F0000003F010000000000803F
            CDCC4C3F010000000000803F0000803F01000000CDCC4C3F0000803F01000000
            0000003F3333333F01000000CDCC4C3E0000803F01000000000000000000803F
            0100000000000000CDCC4C3F010000009A99993E0000003F0100000000000000
            CDCC4C3E010000000000000000000000030000000000000000000000}
objectTColorAnimation
            Duration = 0.100000001490116100
            Trigger = 'IsChecked=true'
TriggerInverse = 'IsChecked=false'
StartValue = x00034E9E
StopValue = xFF034E9E
PropertyName = 'Fill.Color'
end
end
end
end
objectTText
StyleName = 'text'
      Align = Client
Position.Point = '(21,2)'
      Locked = True
      Width = 99.000000000000000000
      Height = 19.000000000000000000
Padding.Rect = '(1,2,1,0)'
HitTest = False
      Text = 'CheckBox'
end
end

関連項目