Hola,
Un "frame" puede servirte como contenedor de otros componentes, y, además tiene la particularidad de que podrás diseñarlo "visualmente". Una vez tengas listo un "frame" podrás usarlo donde te sea menester, bien "visualmente" (arrastrando el "frame" a un formulario) o bien "programáticamente".
Para esto último, básicamente, creo que podría decirse que lo necesario es crear un objeto, y asignarle un "padre". Por ejemplo, para añadir un botón a un panel, como dices, podríamos hacer algo similar a esto:
Código Delphi
[-]
begin
with TButton.Create(Self) do
begin
Parent := Panel1;
end;
end;
No sé si esto te ayuda en algo o qué.