Вьюшки - это кровь BlackBox!
И документы, и формы, и элементы на них - всё это вьюшки.
Они не так просты как Компонентный Паскаль. Узнал я это, прочитав третью часть учебника "Конструирование отображений" (Docu\ru\Tut-6.odc).
Захотел посмотреть исходный код вьюшки-картинки, которая в кратком обзоре (космический шарик, и подпись "OBERON"). Потыкался-помыкался, не нашёл команды "Показать имя вьюшки".
Ближайшая команда - "Edit -> Object Properties..."
Но она только показывает параметры шрифта. Зачем они для картинки?
Посмотрим как она работает: Заходим "Info->Menus", переходим по первой ссылке "System/Rsrc/Menus".
Вижу, вот она: "StdCmds.ShowProp"! Выделяем, давим правой кнопкой мыши, "Source".
Эта команда вызывает процедуру SearchCmd, которая находится чуть выше. Вот её начало:
Код: "OBERON"
PROCEDURE SearchCmd (call: BOOLEAN; OUT found: BOOLEAN);
VAR p: Properties.Property; std: BOOLEAN; v: Views.View; cmd: ARRAY 256 OF CHAR; pos, res: INTEGER;
BEGIN
Controllers.SetCurrentPath(Controllers.targetPath);
v := Containers.FocusSingleton(); found := FALSE;
IF v # NIL THEN
Services.GetTypeName(v, cmd);
GetCmd(cmd, cmd);
...
Services.GetTypeName - это, как раз, то что мне нужно! Лёгким движением делаю следующий модуль:
Код: "OBERON"
MODULE StdROAnaliz;
IMPORT Views, Controllers, Containers, Services, StdLog;
PROCEDURE LogName*;
VAR v: Views.View; cmd: ARRAY 256 OF CHAR;
BEGIN
v := Containers.FocusSingleton();
IF v # NIL THEN
Services.GetTypeName(v, cmd);
StdLog.String(cmd);
StdLog.Ln;
END;
END LogName;
END StdROAnaliz.
Сохраняю его в папке "Std/Mod" под именем "ROAnaliz.odc".
Компилирую.
Добавляю в меню строчку:
"Object Name" "" "StdROAnaliz.LogName" "StdCmds.ShowPropGuard"
Прямо рядом с "Edit -> Object Properties...", чтобы долго не искать.
Сохраняю меню(с закрытием).
Обновляю меню. "Info->UpdateMenus"
Теперь можно пользоваться.
Выделяю интересующую вьюшку. Либо мышкой, либо, если она во всё окно, то Ctrl+Space.
Давлю новый пункт меню, и в логе появляется имя вьюшки.
Осталось его выделить(прямо в окне лога) и посмотреть его "source".