Das Thema und die Optionen sind komplex und vielfältig...
Frames (oder eingebettete Formulare) sind gut und nützlich, wenn Du Controls kombinieren und mit einer einheitlichen
GUI-Logik belegen willst.
So kannst Du das Frame (oder den Block) bei Bedarf erzeugen (ggf. auch mehrfach) und in Dein Projekt einsetzen (wie eine große Komponente).
Für Deinen Zweck erscheinen mir Frames nicht das optimale Mittel.
Offenbar willst Du von einer Menge Komponenten mal diese und mal jene aktivieren.
Insofern müsstest Du Deine cbMenge ggf. in mehrere Frame plazieren und (immer wieder gleich) behandeln.
Insofern wäre es evtl. zweckmäßiger, Blöcke von Controls auf eigene Panels zu legen, diese mit alTop auszurichten und je nach aktueller Situation deren Größe auf 0 zu ändern. Das würe sie entsprechend "ausblenden".
Im Panel.Tag könntest Du die aktuelle Höhe speichern und wenn das Panel wieder sichtbar werden soll, diese wieder herstellen.
Das Ganze dann über eine Funktion realisieren
ShowPanel(PanelX, SichtbarkeitX);
entsprechend nacheinander für alle Bereiche.
Zumindest wäre das evtl. eine Überlegung wert. Letztlich musst Du da einschätzen, wieviele Varianten möglich sind und wie das Ganze sich dann darstellen soll.
Frames wären auf jeden Fall zu bevorzugen, wenn die Einheiten mehrfach im Projekt verwendet würden oder eine sehr komplexe, situationsabhängige
GUI-Logik nötig wäre.