Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 21 дек 2024, 18:37

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Изучение Вьюшек
СообщениеДобавлено: 21 май 2014, 16:22 
Не в сети

Сообщения: 25
Вьюшки - это кровь BlackBox!
И документы, и формы, и элементы на них - всё это вьюшки.

Они не так просты как Компонентный Паскаль. Узнал я это, прочитав третью часть учебника "Конструирование отображений" (Docu\ru\Tut-6.odc).

Захотел посмотреть исходный код вьюшки-картинки, которая в кратком обзоре (космический шарик, и подпись "OBERON"). Потыкался-помыкался, не нашёл команды "Показать имя вьюшки". :(

Ближайшая команда - "Edit -> Object Properties..."
Но она только показывает параметры шрифта. Зачем они для картинки? :)
Посмотрим как она работает: Заходим "Info->Menus", переходим по первой ссылке "System/Rsrc/Menus".
Вижу, вот она: "StdCmds.ShowProp"! Выделяем, давим правой кнопкой мыши, "Source".
Эта команда вызывает процедуру SearchCmd, которая находится чуть выше. Вот её начало:
Код: "OBERON"
  1. PROCEDURE SearchCmd (call: BOOLEAN; OUT found: BOOLEAN);
  2. VAR p: Properties.Property; std: BOOLEAN; v: Views.View; cmd: ARRAY 256 OF CHAR; pos, res: INTEGER;
  3. BEGIN
  4. Controllers.SetCurrentPath(Controllers.targetPath);
  5. v := Containers.FocusSingleton(); found := FALSE;
  6. IF v # NIL THEN
  7. Services.GetTypeName(v, cmd);
  8. GetCmd(cmd, cmd);
  9. ...

Services.GetTypeName - это, как раз, то что мне нужно! Лёгким движением делаю следующий модуль:
Код: "OBERON"
  1. MODULE StdROAnaliz;
  2.  
  3. IMPORT Views, Controllers, Containers, Services, StdLog;
  4.  
  5. PROCEDURE LogName*;
  6. VAR v: Views.View; cmd: ARRAY 256 OF CHAR;
  7. BEGIN
  8. v := Containers.FocusSingleton();
  9. IF v # NIL THEN
  10. Services.GetTypeName(v, cmd);
  11. StdLog.String(cmd);
  12. StdLog.Ln;
  13. END;
  14. END LogName;
  15.  
  16. END StdROAnaliz.


Сохраняю его в папке "Std/Mod" под именем "ROAnaliz.odc".
Компилирую.
Добавляю в меню строчку:
"Object Name" "" "StdROAnaliz.LogName" "StdCmds.ShowPropGuard"
Прямо рядом с "Edit -> Object Properties...", чтобы долго не искать.
Сохраняю меню(с закрытием).
Обновляю меню. "Info->UpdateMenus"

Теперь можно пользоваться.
Выделяю интересующую вьюшку. Либо мышкой, либо, если она во всё окно, то Ctrl+Space.
Давлю новый пункт меню, и в логе появляется имя вьюшки. :)
Осталось его выделить(прямо в окне лога) и посмотреть его "source".


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изучение Вьюшек
СообщениеДобавлено: 21 май 2014, 19:11 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
Вот это да! Потрясающие успехи в освоении BlackBox, и за такое короткое время! Браво. :)


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изучение Вьюшек
СообщениеДобавлено: 22 май 2014, 03:37 
Не в сети

Сообщения: 25
Спасибо, но как-бы я не загордился через чур. :)
Всё таки я на Delphi7 много чего наделал, дошёл до границ её возможностей, сознание трансцендировало. Отсюда и интерес к другому. А с интересом всё получается без насилия над собой. :)


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изучение Вьюшек
СообщениеДобавлено: 22 май 2014, 09:55 
Не в сети
Аватара пользователя

Сообщения: 65
Reobne писал(а):
Захотел посмотреть исходный код вьюшки-картинки, которая в кратком обзоре (космический шарик, и подпись "OBERON"). Потыкался-помыкался, не нашёл команды "Показать имя вьюшки". :(
Команду меню Info, View State пробовали? Она выводит документ "Heap Object" с данными выделенного отображения и там будет виден тип отображения HostPictures.StdView.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изучение Вьюшек
СообщениеДобавлено: 22 май 2014, 10:25 
Не в сети

Сообщения: 25
Спасибо!
А у меня свой велосипед. :lol:


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изучение Вьюшек
СообщениеДобавлено: 22 май 2014, 11:35 
Не в сети
Аватара пользователя

Сообщения: 65
Да оно примерно то же самое делает, опрашивает синглетон с помощью Controllers.PollOpsMsg.


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
© VEDAsoft Oberon Club