Entries in firemonkey (7)


Apesuite Refactoring

I just wanted to give you all a heads up about some refactoring going into Beta 4 that will effect some compatability with prior betas.

The amount of components included in the Apesuite package has been growing, including the number of utility units, rc files and other stuff we need to keep track of.  Because of this, we're making some changes to the namespacing of our files.  

The plus side of this change is that it will make locating the correct units much easier and allow us to logically manage the expansion of our component portfolio.  The down side is that this is a breaking change and you will have to change your uses clauses when you update to Beta 4.  I'm hoping that this is the last big across-the-board change that we will have to make and I'd rather do it now than later when we will effect more people and have more projects effected.

The first new namespace will be as follows:


This namespace will include any visual Firmemonkey controls.  Here you will find units such as:

  • Ape.Controls.Cards
  • Ape.Controls.Pagebar
  • Ape.Controls.SmartImage
  • Ape.Controls.SVG
  • Ape.Controls.Designer
  • etc...

There is also a new namespace to hold any cross-plaform non-visual components that interact at the platform layer.  These will be system integrated components and as such the namespace will be:


Currently the only component that falls into this category would be:

  • Ape.System.TrayIcon

Our final namespace holds all of our Utility units:


Thesse units will be classes, functions, and generic designtime tools that we use internally by our other components.  While we supply this code in the suite, generally it is expected that it is for our internal use.  There is nothing stopping you from also using these in your applications, but we make no guarantee to their effectiveness outside of how we use them and will not generally support them outisde of how they effect one of our other components, so use at your own risk.  Some examples here are:

  • Ape.Utility.Bitmaps
  • Ape.Utility.CrossPlatform
  • Ape.Utility.RTTI
  • Ape.Utility.SAX

We know that we've added a bit of wordiness to the unit names, but believe the tradeoff is worth it. We have reduced our previx from ApeSuite.* to Ape.* to help combat that however.

Let us know if you have any questions about this change.

We are expecting Beta 4 to go out in the next couple days and it will again include some new components for your enjoyment.  Be aware that as the size of Apesuite grows, so will the price of the package.  We will continue to offer the beta discount while we are in beta, but soon the retail price will be going up a bit.  Buy now if you haven't already if you want to secure the lowest price possible for these components.  


Apesuite Beta 3 Announced

It is my pleasure to announce Apesuite Beta 3 which should be going out to all of our customers within the next day or two.  This release is the biggest and best yet with a significant number of bugs squashed, including some workarounds for bugs in the Firemonkey platform itself.  This release also adds some great new features and even a new component that moderately resembles the VCL Ribbon control.

Here's what's new and changed:


  • Transforms have been completely ripped apart and overhauled.  We are no longer depending on Firemonkey to render correctly and have implemented a workaround.  This workaround also fixed a few bugs inherent in the way we were implementing them in a prior release.  To make a long story short, skews work... nested transforms work... matrixes work... and overall, anything dependant upon transforms work much better than before.
  • RTTI functions have been moved into their own unit (Apesuite.Utility.RTTI).
  • Fixed a bug where style attributes opperating on the outter SVG tag would not reset when reloading a new file.

TDesigner (formerly TDesignerLayout)

  • Renamed the component and associated units from TDesignerLayout to simply TDesigner.
  • Implemented standard clipboard functions (Cut, Copy, Paste) and mapped standard keyboard shortcuts.
  • Implemented delete function and mapped to the DELETE key.
  • Implemented arrow key functions as follows:
    • Arrow Keys - Move selected objects 1 point
    • Ctrl+Arrow - Move selected objects 10 points.
    • Alt+Arrow - Coded to Rotate (Left/Right) or Scale (Up/Down) a single selected object 1 degree, but Firemonkey does not report Alt-direction keystrokes.
    • Alt+Ctrl+Arrow - Rotate (Left/Right) or Scale (Up/Down) a single selected object 5 degrees, but Firemonkey does not report Alt-direction keystrokes.
    • Shift+Arrow - Shrink/Grow selected objects by 1 point.
    • Shift+Ctrl+Arrow - Shrink/Grow selected objects by 10 points.
    • Ctrl+Shift+Alt+Arrow - Move Selection to the outermost bounds.
  • Added a default popup menu that can optionally be used which exposes functionality that is otherwise accessible only by the keyboard.
  • Implemented Brint To Front / Send To Back functionality and exposed both the popup menu and via keyboard shortcuts CTRL+Minus and CTRL+Plus.
  • Added methods to simplify adding objects to the designer.
    • AddObjects(string);
    • AddClone(TControl);
    • AddObjectOfClass(TClass)
    • AddObject(TFmxObject)
  • Added SaveTo and LoadFrom methods for Files and Streams
  • Added AsString property to get and set the contents of the designer as a string.
  • Added SelAsString to get and set the selected contents of the designer as a string.
  • Added properties to control the default position for new objects and an optional delta for successive new objects.
  • Refactored Selection Moves and Resizes to their own functions whcih are now common to mouse and keyboard functionality.
  • Fixed several bugs and tweaked appearance a bit

TPagebar / TPageItem / TToolbox

  • Created a new paged toolbar component to mimic a ribbon style interface to some degree.  The intention is not to be MS Ribbon guideline compliant with this component, but rather accomplish some of the same goals in user interface design in a cross platform component.  This component is in it's infancy and there is a lot that we will strive for in the future, but it's already immensely usefull as is today.
  • Component is a true Firemonkey control, both technically and in spirit.  It is implemented as skins so that you may tweak it's appearance and get an acceptable look and feel on each platform.  A skin resource is included for Windows and Mac OSX.
  • TPageBar is the container toolbar class.
  • TPageItem is the pages within the bar.
  • TToolbox is a bottom-captioned groupbox like container to be dropped inside of a TPageItem. 
  • Please refer to the image for example usage and appearance.

Runtime Layout Demo

  • Permits adding a larger number of controls to the designer
  • Changed interface to use the new TPagebar component as a demo

Known Problems

  • TSVG still has a problem with scale transforms on items rendered as a Firemonkey TPath.  The size is scaling correctly, but the XY position of absolute moves does not.
  • TCard is not rendering for some reason.  This is a top priority for the next update.  In the meantime, you can use the TSVG component and load the cards from the resource folder manually.




Page 1 2