Набросал я в качестве проверки своей догадки тривиальный код:
TestGui
## Код:
```
MODULE TestGui;
   IMPORT Log, Math;
   VAR
      Person*: RECORD
         First*: ARRAY 40 OF CHAR;
         Last*: ARRAY 40 OF CHAR;
         Age*: INTEGER;
      END;
END TestGui.
```

По этому коду нагенерил форму.
Во втором модуле задаю логику:
## Код:
```
MODULE TestControl_gui;
   IMPORT g := TestGui, d:=Dialog;
   PROCEDURE Set1*;
   BEGIN
      g.Person.First := 'Фёдор';      
      g.Person.Last := 'Сумкин';
      g.Person.Age := 40;
      d.UpdateString(g.Person.First);
   END Set1;

   PROCEDURE Set2*;
      VAR
   BEGIN
      g.Person.First := 'Иван';
      g.Person.Last := 'Сидоров';
      g.Person.Age := 35;
      d.UpdateString(g.Person.First);
   END Set2;

END TestControl_gui.
^TestControl_gui.Set1
^TestControl_gui.Set2
```


А в итоге получаю обновление всех полей РАЗОМ!!! Хоть числа, хоть строки! Объясните, ЧЯДНТ?