Да нету у вас тупизма, всё нормально

Без разницы какие компоненты сохранять, хоть статически созданные ещё во время разработки, хоть динамически появляющиеся в рантайме - смысл такой: сохраняется сразу вся форма, со всеми принадлежащими ей (на момент сэйва) элементами. Запись происходит в формате текстового файла, проще говоря тот же *.ini, только не нужно много букофф выстукивать, всё за нас сделает среда. К сожалению тот пример не сохранился, так что вот вам выжимки из подобного рабочего проекта:
Добавьте в ваш код это
Код:
var
fn: string = 'Form.txt';
procedure TForm1.FormCreate(Sender: TObject);
var
FStr: TFileStream;
MemStr: TMemoryStream;
begin
if FileExists(fn) then
begin
Form1.DestroyComponents;
FStr:= TFileStream.Create(fn, fmOpenRead);
MemStr:= TMemoryStream.Create;
ObjectTextToBinary(FStr, MemStr);
MemStr.Position:= 0;
MemStr.ReadComponent(Form1);
MemStr.Free;
FStr.Free;
end;
end;
и это
Код:
procedure TForm1.FormDestroy(Sender: TObject);
var
FStr: TFileStream;
MemStr: TMemoryStream;
i: integer;
begin
FStr:= TFileStream.Create(fn, fmCreate);
MemStr:= TMemoryStream.Create;
MemStr.WriteComponent(form1);
MemStr.Position:= 0;
ObjectBinaryToText(MemStr, FStr);
MemStr.Free;
FStr.Free;
end;
Всё, теперь форма будет сохраняться со всем её содержимым и грузиться при старте программы.
С нативными процедурами немного сложнее - они должны быть заданы заранее, но это уже другая песня, нужно этот момент разбирать отдельно и с конкретикой, попробуйте сначала просто сохранку освоить