Okay, I found it: CanDestroy. Can I leave both procedures below as they are or do I need to test for sFrameBar1.Items[0].Frame <> nil and then explicitely free the frame? There do not seem to be any memory leaks if I don't, but I want to make sure that it doesn't have any other implications when CanDestroy is set to false. Thanks.
procedure TForm1.sFrameBar1Items0CreateFrame(Sender: TObject;
var Frame: TCustomFrame);
begin
Frame := TFrame1.Create(nil); // <
do I have to check if the frame already exists before I create it?
end;
procedure TForm1.sFrameBar1Items0FrameDestroy(Sender: TObject;
var Frame: TCustomFrame; var CanDestroy: Boolean);
begin
CanDestroy := False;
end;