Hola MaMu,
¿Te compila ese código?
Porque me parece raro observar algo como:
Código Delphi
[-]
B := TB.Create(Self);
B := Show;
¿No sería B.Show?
Por otro lado, el único modo de que B haga uso de C y que C también lo haga con B es que uno de los dos (ya sea B o C) tenga declarados la correspondiente unidad en uses pero en implementation y el otro en interface. De otro modo te advertirá con un error que dice algo similar a "Circular Reference".
Sin conocer el error exacto no te sabríamos ayudar. Disculpa que sea un tanto pesado pero el bla, bla no ayuda en nada.
Además, tendríamos que ver apropiadamente el código que tienes.
Saludos,