Creo que el problema es exactamente lo mismo que piensas. Estás compartiendo una variable global (
Calculate_Total) entre las distintas instancias del form, por lo que al final todos trabajan con el mismo Thread. Creo que necesitarás declarar e implementar un nuevo constructor para TCalculate_Total que te permita pasarle un nuevo parámetro que indique cuál es el formulario padre.
Sin embargo, debes de saber que
la biblioteca cliente de Firebird no es Thread Safe (hasta la versión 2.5), por lo que la independencia que crees estar creando es subliminal y que además talvez podría dar origen a problemas que sean muy difíciles de rastrear.
Saludos,
Chris