Hola Theluar.
Ignoro las declaraciones y la organización del código de tu aplicación, por lo que sólo puedo darte respuestas genéricas y tal vez no las mas óptimas...
Para crearlo:
Código Delphi
[-]
procedure TfrmMain.btnShowFrame2Click(Sender: TObject);
begin
if not Assigned(FindComponent('Frame2')) then
with TFrame2.Create(Self) do Parent := Self
end;
Para liberarlo:
.- desde el form principal:
Código Delphi
[-]
procedure TfrmMain.btnFreeFrame2Click(Sender: TObject);
begin
FindComponent('Frame2').Free
end;
.- desde el mismo Frame:
Código Delphi
[-]
...
type
TFrame2 = class(TFrame)
...
btnCerrar: TButton;
procedure btnCerrarClick(Sender: TObject);
...
private
procedure CMRelease(var Msg: TMessage); message CM_RELEASE;
public
end;
implementation
procedure TFrame2.CMRelease(var Msg: TMessage);
begin
Free
end;
procedure TFrame2.btnCerrarClick(Sender: TObject);
begin
PostMessage(Handle, CM_RELEASE, 0, 0)
end;
...
Saludos.