Hola AzidRain.
Siempre que todos los StringGrids (que haya en cada MDIChild) tengan el mismo nombre, otra opción que se me ocurre es:
MDIForm
Código Delphi
[-]
type
TOPer = (opSuma, opResta);
TMDIForm = class(TForm)
...
private
function OperarGrid(Oper: TOper): Double;
end;
...
implementation
function TMDIForm.OperarGrid(Oper: TOper): Double;
var
i: Integer;
begin
Result:= 0;
for i:= MDIChildCount-1 downto 0 do
with MDIChildren[i].FindComponent('StringGrid1') as TStringGrid do
case Oper of
opSuma : Result:= Result + StrToFloat(Cells[Col,Row]);
opResta: Result:= Result - StrToFloat(Cells[Col,Row]);
end;
end;
...
Si se tratara de DBGrids cambiando el cast funciona igualmente (con SelectedField). La cosa se complicaría un poco si también existen campos no numéricos...
Saludos.