Hatte das Thema auch mal.
Das Designen zur Laufzeit ist weniger das Thema. Dafür gibts fertige Components bzw. Librarys. Bei mir kam Greatis zum Einsatz.
Wichtiger ist wirklich die Sache mit dem Speichern. Schnell wird nämlich klar, dass das simple Speichern und Laden einer .dfm zwar sehr einfach und zuverlässig machbar ist (siehe
DFM-Editor), aber dafür nicht zukunftssicher. Solltest du deine App erweitern (Update), z.B. neue Buttons samt Events im Formular platzieren, wird der EndUser nicht ohne Weiteres da dran kommen...
Ich habe in meinem Projekt beim Designen des Forms durch den Anwender nur die Abweichungen vom Ursprung erfasst und diese beim Erzeugen des Forms wieder hergestellt.
Dafür habe ich ein neues Form, das die Grundlage für meine MDIChilds sein sollte, erzeugt. Dieses hat einen neuen constructor Create() über den du nach "inherited Create()" dein Fenster schön wieder herstellen kannst. Nebenbei kann man hier auch die Position des Childs beeinflussen. Und über dieses Template werden die eigentlichen MDIChilds per Application.CreateForm() erzeugt.