Pues claro, fallo mio, perdona.
Código Delphi
[-]
case ventana_actual of
1: begin
NewBoton := TLabel.create(FPrincipal.GroupBoxProd1);
Parent := FPrincipal.GroupBoxProd1;<<<<< aqui el error
end;
Al cambiar el with NewBoton do, la linea marcada la interpreta de forma distinta, Ahora está intentando cambiar el padre a ¡¡ la ventana !!.
Al pasarlo abajo, hay que poner
Código Delphi
[-]
NewBoton.Parent := FPrincipal.GroupBoxProd1;
para todas las opciones del "case".
Para futuras veces Stack Overflow es que la pila de llamadas se ha desbordado, esto suele ocurrir en funciones que se llaman a sí mismas en un bucle infinito, o bien que se pase del límite establecido para la pila.
La verdad es que me desconcertó por unos segundos el tipo de error que daba
.
Saludos