Home  ==>  papers  ==>  firemonkey  ==>  firemonkey_architecture   

FireMonkey Architecture - Felix John COLIBRI.

1 - FireMonkey Uml Class Diagram

Looking at the source code, we came up with the following Firemonkey Class Diagram:


2 - The Component hierarchy

Here is a sketch of the organization:
  • tPersistent
    • tGradient
    • tBrush : Color, Kind, Style
    • tFont : Family, Size
    • tComponent
      • tFmxObject
        • purpose :
          • the container (ChildrenCount, Children), with the streaming and style
        • tAnimation
        • tEffect
        • tBrushObject
        • tBitmapObject
        • tControl
          • purpose :
            • fScene : iScene with the Canvas
            • Position, Scale, RotationAngle
            • key and mouse handling
          • tShape
            • purpose :
              • Fill and Stroke for the brush and the pen
            • tLine
            • tRectangle
            • tEllipse
            • tPath
            • tText
              • purpose
                • used as a style element, like tButton
                • Text, Font, alignment
          • tStyledControl
            • purpose :
              • StyleLookup to extract the styles
              • help support
            • tPanel
            • tTextControl
              • purpose :
                • the controls with some text
              • tLabel
              • tButton ...
            • tStatusBar ...
            • tTrack ...
            • tEdit
              • purpose :
                • Text, along with the clipboard and StartPos, SelText ...
            • tScrollBox
              • tMemo
          • tImage
          • tPaintBox
          • tLayout

In other words :
  • tComponent, as usual, still manages ownership, meaning that destroying a tComponent will first destroy the component's owned sub-components (in Components[])
  • tFmxObject is the root of the FireMonkey hierarchy. It handles Parent / Children trees. Any tFmxObject can be a container for any other tFmxObject. Basic streaming starts at this level. tFmxObject.FindStyleResource is used to find the style of a tStyledObject (there is also a Fmx.Types.FindStyleResource global method which looks at the default StyleBook)
  • the tControl (that is the Fmx.tControl) is concerned with Form Controls
    • it has a Canvas
    • manages Position, Scale etc
    • handles the keyboard and the mouse
  • two descendent branches
    • "Primitive Controls", which contain all properties for their display. Those can be used like usual controls (you can draw rectangles, display a string using a tText). By default they have no effects or animation
    • "Styled Controls" which automatically have a style child. This child usually starts with a tLayout (for grouping the style elements) which contains "Primitive" style controls, like tRectangle, tText, or tEffect, tAnimation. Those controls have default styles, but we can assign another style or one of our styles using the StyleLookup property

3 - Other Articles

Here are some references :
  • our other articles about FireMonkey / Delphi XE2:
    • FireMonkey Styles
        Felix COLIBRI - 11 sept 2011 - 56 K, 2 .ZIP sources, 21 Fig.
      • changing styles for all or for some components, the Style Designer, content of a .STYLE file, setting then StyleLookup property, predefined styles.
    • FireMonkey Animations tutorial
        John COLIBRI - 26 Sept 2011 - 56 K, 3 sources .ZIP, 16 Fig
      • selecting the Property to animate, the start and end values, the interpolation law, the speed and repetition. 3d animations. Vcl or FireMonkey ? (in French)
    • Delphi XE2 LiveBindings Tutorial
        John Colibri - 30 Sept 2011 - 54K, 6 sample codes, 43 figs
      • how to setup the SourceComponent and the ControlComponent and expression, tBindingsList, the bindings Editor, using several sources with tBindingScope, building bindings by code, LiveBindings and databases. Far more flexible than the Vcl db_xxx, but with the risks of late binding (in French)
    • Delphi LiveBindings Spelunking
        Felix COLIBRI - 3 Oct 2011 - 114 K, 4 .ZIP sources, 8 Fig
      • analysis of the architecture of the Delphi LiveBindings : how the tBindingExpression compiles a String expression to build an environment referencing objects which can be evaluated to fill component properties. Dump of the pseudo code and UML Class Diagram of the LiveBinding architecture
    • Simple FireMonkey Object Inspector
        Felix COLIBRI - 10 Oct 2011 - 52 K, 2 .ZIP source, 5 Fig
          building a FireMonkey Object Inspector which presents the components of the Form and displays their property names an values and allows the user to modify them at runtime
    • FireMonkey Style Explorer : create tFmxObjects from their class name, create their default style, display their child style herarchy in a tTreeView, present each style element in an Object Inspector which can be used to change the property values.

  • A look at the 3D side of FireMonkey
      Eric GRANGE - 6 Oct 2011
    • Details about Scope, Scene Graph, Materials and Textures, Meshes, Cadencing

4 - The author

Felix John COLIBRI works at the Pascal Institute. Starting with Pascal in 1979, he then became involved with Object Oriented Programming, Delphi, Sql, Tcp/Ip, Html, UML. Currently, he is mainly active in the area of custom software development (new projects, maintenance, audits, BDE migration, Delphi Xe_n migrations, refactoring), Delphi Consulting and Delph training. His web site features tutorials, technical papers about programming with full downloadable source code, and the description and calendar of forthcoming Delphi, FireBird, Tcp/IP, Web Services, OOP  /  UML, Design Patterns, Unit Testing training sessions.
Created: oct-11. Last updated: jul-15 - 98 articles, 131 .ZIP sources, 1012 figures
Copyright © Felix J. Colibri 2004 - 2015. All rigths reserved
Back:    Home  Papers  Training  Delphi developments  Links  Download
the Pascal Institute


+ Home
  + articles_with_sources
    + database
    + web_internet_sockets
    + oop_components
    + uml_design_patterns
    + debug_and_test
    + graphic
    + controls
    + colibri_utilities
    + colibri_helpers
    + delphi
    + firemonkey
      – firemonkey_architecture
      – firemonkey_obj_inspect
      – fmx_style_explorer
    + compilers
  + delphi_training
  + delphi_developments
  + sweet_home
  – download_zip_sources
  + links
Site Map
– search :

RSS feed