Каркас Блекбокса позволяет расширять доступные элементы управления, которые возможно затем везде использовать в формах и составных документах.

Элемент управления связывается с данными в вашем модуле, и может отображать данные графически.

Ниже предлагаю простой пример элемента управления, отображающего связанную с ним переменную типа INTEGER в виде круга цвета Ports.color = переменной.

## Код:
```
MODULE LumiInd;

   IMPORT Controls, Meta, Ports, Properties, Views;

   TYPE
      Indicator = POINTER TO RECORD (Controls.Control) END;

   PROCEDURE (ind: Indicator) Restore (f: Views.Frame; l, t, r, b: INTEGER);
   BEGIN
      IF ind.item.Valid() & ~ ind.disabled THEN
         f.DrawOval(0, 0, 20 * f.dot, 20 * f.dot, - 1, ind.item.IntVal())
      END;
      IF ind.disabled THEN
         f.DrawOval(0, 0, 20 * f.dot, 20 * f.dot, f.dot, Ports.grey50)
      ELSE
         f.DrawOval(0, 0, 20 * f.dot, 20 * f.dot, f.dot, Ports.black)
      END
   END Restore;

   PROCEDURE (ind: Indicator) HandlePropMsg2 (VAR msg: Properties.Message);
   BEGIN
      WITH msg: Properties.SizePref DO
         IF (msg.w = Views.undefined) OR (msg.h = Views.undefined) THEN
            msg.w := 15 * Ports.point; msg.h := 15 * Ports.point
         END
      ELSE END
   END HandlePropMsg2;

   PROCEDURE (ind: Indicator) Update (f: Views.Frame; op, from, to: INTEGER);
   BEGIN
      ind.Restore(f, f.l, f.t, f.r, f.b)
   END Update;

   PROCEDURE (ind: Indicator) CheckLink (VAR ok: BOOLEAN);
   BEGIN
      ok := ind.item.typ = Meta.intTyp
   END CheckLink;

   PROCEDURE NewControl (p: Controls.Prop): Views.View;
      VAR ind: Indicator;
   BEGIN
      NEW(ind);
      Controls.OpenLink(ind, p);
      RETURN ind
   END NewControl;

   PROCEDURE Deposit*;
      VAR p: Controls.Prop;
   BEGIN
      NEW(p); p.link := ""; p.label := ""; p.guard := ""; p.notifier := "";
      Views.Deposit(NewControl(p))
   END Deposit;

END LumiInd.
```


Чтобы вставить элемент управления в форму или документ, необходимо выполнить команду "LumiInd.Deposit; StdCmds.PasteView".