andrea-magni/tframestand/tframestand-development
Claude Code and agent skill by andrea-magni/tframestand
- community
Checking that the SKILL.md file is still in the repository.
Develop FireMonkey (FMX) user interfaces with TFrameStand and TFormStand (Delphi components by Andrea Magni) - showing frames and forms on "stands" (styles with animations), dialogs that return a result (ShowModal, ModalResult), Back/Esc handling, navigation stacks (Push/Pop), the stand gallery (dialog, lightbox, bottom sheet, drawer, snackbar, page), Common Actions, context injection ([FrameInfo], [BeforeShow]...), responsive frames (breakpoints, rmLive) and lifecycle (New, Use, Show, Hide, Hi…
Install
npx vskill@latest install andrea-magni/tframestand/tframestand-developmentSKILL.md
Developing with TFrameStand / TFormStand
TFrameStand (https://github.com/andrea-magni/TFrameStand, docs https://andrea-magni.github.io/TFrameStand/) shows FMX frames (TFrameStand) or the content of forms (TFormStand) on a stand: a style item (from a TStyleBook) that wraps the subject with decorations and OnShow*/OnHide* animations. Minimum Delphi version: 10.4. All the calls run in the main thread.
Mental model
- Component:
TFrameStand/TFormStandon a form or data module. Key properties:StandBook(theTStyleBookwith the stands),DefaultStandName(framestand/formstand),DefaultParent,AnimationShow/AnimationHidemasks (OnShow*/OnHide*),CatchBackKey,PushMode,ResponsiveMode. - Subject: the frame or form shown. Stand: a clone of the style item named like the stand; the subject goes in its element with
StyleName = 'container'. A missing stand name gives a plain layout (no decoration). - Info:
TFrameInfo<T>/TFormInfo<T>(baseTSubjectInfo), the handle of one subject on its stand:Frame/Form,Stand,Container,Show,Hide,HideAndClose,Close,ShowModal,ModalResult. Keep the info, not the frame (the frame can be replaced byResponsiveMode = rmLive).
Choosing the API
| The user wants | Use | |
|---|---|---|
| show a frame on a stand | New<T>(AParent, AStandName) + Show, or NewAndShow<T> | |
| show a frame already on the form | Use<T>(AFrame, AParent, AStandName) (not owned) | |
| a dialog that returns a result | ShowModal(procedure (AFrame: T; AResult: TModalResult) ...); the frame sets FInfo.ModalResult := mrOk | |
| close/cancel from many places | a Common Action: CommonActions.Add('*_cancel', procedure (AInfo: TSubjectInfo) begin AInfo.ModalResult := mrCancel end) | |
| Android Back / Esc | CatchBackKey := True; non-dialog subjects opt in with BackKeyAction | |
| pages, wizards, master/detail | Push<T>, Pop, PopToRoot, PushMode | |
| ready-made dialog, lightbox, bottom sheet, drawer, snackbar, page | load stands\Stands.Light.style / Stands.Dark.style in the StandBook | |
| toast / snackbar that goes away | Show then HideAndCloseAfter(2500) | |
| different frame per screen width | Responsive.Define(TBase, TWide, 'md'), ResponsiveMode := rmLive to follow resizes |
Rules that avoid the common bugs
- Dismiss with `HideAndClose`, not `Close`, from inside the subject's own event handlers.
Closefrees the frame (and the control being clicked) at once;HideAndCloseandModalResultclose afterDefaultHideAndCloseDeferTimeMS. - After `Close` / `HideAndClose` the info is freed: set fields that reference it to nil (or use
ShowModalwithAClose = Trueand keep no reference). - Register Common Actions before `New`/`Use`: they are bound when the subject is created. A matching control's
OnClickis replaced. - `ModalResult` only dismisses subjects shown with `ShowModal`; the FMX
TButton.ModalResultproperty does not apply (it sets the host form's result): setFInfo.ModalResultinOnClickor in a Common Action. - Injection:
[FrameInfo] FInfo: TFrameInfo<TMyFrame>must use the frame's own class or a base class it descends from; with responsive substitution, type it on the base class requested toNew. - Responsive substitutes must descend from the base class passed to
New<T>. - Do not cache `Info.Frame` with `ResponsiveMode = rmLive`; copy state to the new frame in
OnResponsiveChange. - `Use` frames are not owned: closing detaches them; if their parent is destroyed while shown, FMX destroys them too.
- Animations: names must match
AnimationShow/AnimationHide(OnShow*/OnHide*);Hidewaits for the longestOnHide*animation. In a style, put size-dependent values in aTStyleTagchild (TagString = 'StartValue=-ParentHeight'), not in the animation'sTagString(not stored in styles). - Background work: run tasks with
TTask.Runand touch the components only throughTThread.Synchronize/TThread.Queue; theShow(ABackgroundTask...)overload is deprecated.StyleBook/DefaultStyleNameare deprecated names ofStandBook/DefaultStandName. - Follow the style of the existing code (frames vs forms, Common Actions vs
OnClick, stands in the form's style book or in a separate file).
References
Read the reference matching the task:
references/api.md— exact declarations (types, enums, units, signatures, events) and behaviors the declarations don't tell: read it before writing code against an API you are not sure about.references/lifecycle.md— New/Use/Show/Hide/HideAndClose/Close, ownership, timing, events, lifecycle methods ([BeforeShow]...), context injection, Common Actions.references/stands.md— designing stands, the stand gallery, animations, values from the stand size (TStyleTag).references/dialogs-and-navigation.md—ShowModal/ModalResult, Back/Esc (CatchBackKey,BackKeyAction), navigation stack (Push/Pop,PushMode,StackOperation).references/responsive.md— breakpoints, definitions,OnGetSubjectClass,ResponsiveMode = rmLive,OnResponsiveChange.references/formstand.md— TFormStand: forms as subjects,[Align]/[ClipChildren], differences from frames.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingSkills/tframestand-development/SKILL.md
Popularity
- Repository stars
- 280
- Repository forks
- 85
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/andrea-magni/tframestand/tframestand-development)