# TFrameStand > TFrameStand and TFormStand: Delphi FireMonkey (FMX) components to show frames and forms through reusable, animated "stands" — transitions, dialogs, lightboxes, wait screens and responsive layouts. TFrameStand and TFormStand are open source (MPL 2.0) components for Embarcadero Delphi FireMonkey. Source code, releases and demos: https://github.com/andrea-magni/TFrameStand ## Guide - [Introduction](https://andrea-magni.github.io/TFrameStand/guide/introduction.md): TFrameStand and TFormStand are two non-visual components for Delphi FireMonkey (FMX) that show a TFrame (or the content of a TForm) inside your application through a stand: a reusable visual layer that sits between the frame and the control hosting it. - [Installation](https://andrea-magni.github.io/TFrameStand/guide/installation.md): TFrameStand is available in GetIt, the Embarcadero package manager. In the IDE choose Tools ▸ GetIt Package Manager, search for TFrameStand and click Install. GetIt compiles the packages, installs the design-time package and sets the library path for you. - [Your First Stand](https://andrea-magni.github.io/TFrameStand/guide/getting-started.md): In this walkthrough you build a lightbox: a frame shown at the centre of the form over a dimmed background, fading in and out, closed by a click on the background or on a button of the frame. It is the classic TFrameStand example, and it is all in the demos\lightbox project if you prefer to read... - [Core Concepts](https://andrea-magni.github.io/TFrameStand/guide/core-concepts.md): TFrameStand and TFormStand share their whole engine, implemented in the SubjectStand unit. This page describes the moving parts; the names are the ones you find in the code. - [Designing Stands](https://andrea-magni.github.io/TFrameStand/guide/stands.md): A stand is an ordinary FireMonkey style item. You design it in the style designer of a TStyleBook (double-click the style book), exactly like a custom style for a control, and assign that style book to the StandBook property of the component. - [Lifecycle & Ownership](https://andrea-magni.github.io/TFrameStand/guide/lifecycle.md): A subject goes through a simple life: it is created (or adopted), shown, hidden, possibly shown again, and finally closed. The Status property of the info tells you where it is. - [FAQ & Troubleshooting](https://andrea-magni.github.io/TFrameStand/guide/faq.md): No. Without a StandBook, or when the stand name is not found, the subject is placed in an empty TLayout aligned to the whole parent. You still get the lifecycle, the injection and the Common Actions, just no decoration. - [Building & Testing](https://andrea-magni.github.io/TFrameStand/guide/building.md): The repository has a build script and a test suite, used before every release and useful for contributions. - [AI Agent Skill](https://andrea-magni.github.io/TFrameStand/guide/agent-skills.md): An Agent Skill that teaches Claude Code and other AI coding agents to develop FireMonkey user interfaces with TFrameStand and TFormStand: installation as a plugin, with npx or by hand, and usage examples. ## Features - [Stand Gallery](https://andrea-magni.github.io/TFrameStand/features/gallery.md): Six ready-made stands for the most common patterns of mobile and desktop apps, in a light and a dark version: load them in a style book and show your frames on them, without designing anything. - [Animations](https://andrea-magni.github.io/TFrameStand/features/animations.md): TFrameStand drives FireMonkey animations by name: no code, no events to wire. Put a TAnimation descendant (TFloatAnimation, TColorAnimation, TRectAnimation, TBitmapListAnimation...) in the stand and name it so that it matches one of two masks: - [Common Actions](https://andrea-magni.github.io/TFrameStand/features/common-actions.md): Many frames share the same gestures: close, cancel, confirm, go back. Common Actions let you write that behaviour once, on the component, and bind it by name to the controls of every frame and every stand it shows. - [Context Injection](https://andrea-magni.github.io/TFrameStand/features/injection.md): A frame shown by TFrameStand often needs its context: the info to close itself, the parent it decorates, the stand to tweak an element. Instead of passing references around, the frame declares what it needs with attributes, and the component injects it. - [Dialog Results](https://andrea-magni.github.io/TFrameStand/features/dialogs.md): Most frames shown with TFrameStand are dialogs: pick a colour, confirm a deletion, rate an item. ShowModal and ModalResult give them the result plumbing of FMX modal forms: the dialog sets a result, the caller gets it in a procedure. - [Navigation Stack](https://andrea-magni.github.io/TFrameStand/features/navigation.md): Wizards, settings pages, master/detail flows: pages that open one on top of the other and close in the reverse order. Push and Pop keep that stack for you, with the transitions of the stands. - [TFormStand](https://andrea-magni.github.io/TFrameStand/features/formstand.md): TFormStand is the twin of TFrameStand that uses TForm descendants as subjects. Everything described for frames (stands, animations, Common Actions, injection, lifecycle, responsive) works the same way; only the type names change. - [Responsive Frames](https://andrea-magni.github.io/TFrameStand/features/responsive.md): The same piece of UI often needs a different layout on a phone and on a desktop. TFrameStand can substitute the frame class (and the stand, and the parent) when a frame is created, according to the width available in the parent, using breakpoints as CSS frameworks do. - [Background Work](https://andrea-magni.github.io/TFrameStand/features/background-work.md): A wait screen while something runs in the background is one of the most common uses of TFrameStand (see demos\wait). The components are UI objects and must be used from the main thread; the work runs in a task, and the UI is touched only through TThread.Synchronize or TThread.Queue. - [3D Stands](https://andrea-magni.github.io/TFrameStand/features/stand-3d.md): A stand is any FMX style item, so it can contain a 3D scene: a TViewport3D with a TLayer3D inside shows a 2D frame on a plane in a 3D space, which you can rotate, move and animate like any 3D object. demos\Stand3D shows two such stands, stand3D and new3D. - [Design-time Editor](https://andrea-magni.github.io/TFrameStand/features/component-editor.md): When the design-time package is installed, double-clicking a TFrameStand or TFormStand on a form opens a test window where you can try the stands of its StandBook without running the application. ## Reference - [TFrameStand / TFormStand](https://andrea-magni.github.io/TFrameStand/reference/components.md): Members are listed for TFrameStand; TFormStand has the same ones with Form in place of Frame (see TFormStand). - [TFrameInfo / TFormInfo](https://andrea-magni.github.io/TFrameStand/reference/subject-info.md): The info is the handle of one subject on its stand. It is created by New/Use and freed by Close. - [Attributes](https://andrea-magni.github.io/TFrameStand/reference/attributes.md): All the attributes can be written with or without the Attribute suffix ([FrameInfo] = [FrameInfoAttribute]). - [Events](https://andrea-magni.github.io/TFrameStand/reference/events.md): All the events are published on both components and receive the component as ASender. - [Units & Packages](https://andrea-magni.github.io/TFrameStand/reference/units.md): The design-time units use the IDE's DesignEditors and DesignIntf units and must not be used in applications. ## Demos - [Demos](https://andrea-magni.github.io/TFrameStand/demos/index.md): The demos folder of the repository contains small, focused projects; most of them are in demos\AllDemosProjectGroup.groupproj. The projects already have the source folder in their search path, so they compile without installing the packages (installing them is needed only to open the forms in... ## More - [Release Notes](https://andrea-magni.github.io/TFrameStand/release-notes.md): Releases are published on GitHub and on GetIt.