andrea-magni/tframestand/tframestand-development

Claude Code and agent skill by andrea-magni/tframestand

Trust tier 2
  • community
LLM review pending
Source check pending

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-development

SKILL.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 / TFormStand on a form or data module. Key properties: StandBook (the TStyleBook with the stands), DefaultStandName (framestand / formstand), DefaultParent, AnimationShow/AnimationHide masks (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> (base TSubjectInfo), 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 by ResponsiveMode = rmLive).
pascal
uses FrameStand, SubjectStand;
LInfo := FrameStand1.New<TDetailsFrame>(ContentLayout, 'lightbox'); // created and owned, not shown
LInfo.Frame.Customer := LCustomer;
LInfo.Show;
...
LInfo.HideAndClose; // hide animations, then free stand, frame and info

Choosing the API

The user wantsUse
show a frame on a standNew<T>(AParent, AStandName) + Show, or NewAndShow<T>
show a frame already on the formUse<T>(AFrame, AParent, AStandName) (not owned)
a dialog that returns a resultShowModal(procedure (AFrame: T; AResult: TModalResult) ...); the frame sets FInfo.ModalResult := mrOk
close/cancel from many placesa Common Action: CommonActions.Add('*_cancel', procedure (AInfo: TSubjectInfo) begin AInfo.ModalResult := mrCancel end)
Android Back / EscCatchBackKey := True; non-dialog subjects opt in with BackKeyAction
pages, wizards, master/detailPush<T>, Pop, PopToRoot, PushMode
ready-made dialog, lightbox, bottom sheet, drawer, snackbar, pageload stands\Stands.Light.style / Stands.Dark.style in the StandBook
toast / snackbar that goes awayShow then HideAndCloseAfter(2500)
different frame per screen widthResponsive.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. Close frees the frame (and the control being clicked) at once; HideAndClose and ModalResult close after DefaultHideAndCloseDeferTimeMS.
  • After `Close` / `HideAndClose` the info is freed: set fields that reference it to nil (or use ShowModal with AClose = True and keep no reference).
  • Register Common Actions before `New`/`Use`: they are bound when the subject is created. A matching control's OnClick is replaced.
  • `ModalResult` only dismisses subjects shown with `ShowModal`; the FMX TButton.ModalResult property does not apply (it sets the host form's result): set FInfo.ModalResult in OnClick or 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 to New.
  • 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*); Hide waits for the longest OnHide* animation. In a style, put size-dependent values in a TStyleTag child (TagString = 'StartValue=-ParentHeight'), not in the animation's TagString (not stored in styles).
  • Background work: run tasks with TTask.Run and touch the components only through TThread.Synchronize/TThread.Queue; the Show(ABackgroundTask...) overload is deprecated. StyleBook/DefaultStyleName are deprecated names of StandBook/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

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
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/andrea-magni/tframestand/tframestand-development/badge)](https://verified-skill.com/skills/andrea-magni/tframestand/tframestand-development)

Something wrong with this skill or its page? Tell us.