Yo tengo ese mismo problema.
Con el ejemplo ese que nos pasaste tampoco funciona.
Resulta que yo tengo un mdichild (form8) el cual tiene una grilla que al hacer doble click me habre otro mdichild (form10) el cual al ser mostrado necesita leer una variable publica del form8, por ejemplo yo lo hago asi:
(Perdon, No se como se pega para que se vea en Código)
Código Delphi
[-]
procedure TForm10.ObtenerDato(Sender: TObject);
begin
showmessage(inttostr(Form8.IdPresupuesto));
end;
eso me muestra un numero asi 1324324234, aviendole asignado anteriormente un 5 por ejemplo
La unica solucion que encontre que no me parece la adecuada (seguro hay otra forma que no la se) es crear la variable en el form1 y al hacer 2 click sobre la grilla asignar el valor en form1.varible y cuando se muestre el form10 leerla desde ahi, no es problema hacer eso cuando son 1 o 2 variables, el problema se me hace cuando tengo muchas variables para usarlas asi.
Agradeceria si alguien tiene alguna ayuda.
Gracias
Walter