Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Oberon
Перезагрузить страницу Элемент управления и переменная BlackBox
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
imported_Next imported_Next вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 25.04.2006
По умолчанию Элемент управления и переменная BlackBox - 25.04.2006, 18:29

Можно "привязать" элемент управления BlackBox к переменной( например Text Field к x*: REAL). В Notifier Text Field написать: Dialog.UpdateReal(x); Тогда, при изменении значения в Text Field, переменная x тоже будет меняться. Но! как сделать так, чтобы при изменении x, менялось значение в Text Field? Вопрос можно сформулировать более общо: как реализовать механизм/связь 2-х переменных, чтобы одна из них реагировала на изменение значения другой?
Ответить с цитированием
  (#2 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию Re: Элемент управления и переменная (BlackBox) - 26.04.2006, 13:23

Для обратной связи надо написать Notifier.

Элемент управления должен иметь Link, а также может иметь Guard и Notifier.

Посмотрите документацию к модулю Dialog на предмет Notifier-а.

Пример:
Код:
MODULE TestControl;

    IMPORT Log, Dialog;
    
    VAR x*: REAL;

    PROCEDURE Notifier* (op, from, to: INTEGER);
    BEGIN
  Log.String("Notifier x = "); Log.Real(x);
  Log.String(", op = "); Log.Int(op);
  CASE op OF
      Dialog.pressed: Log.String(" (pressed)") |
      Dialog.released: Log.String(" (released)") |
      Dialog.changed: Log.String(" (changed)") |
      Dialog.included: Log.String(" (included)") |
      Dialog.excluded: Log.String(" (excluded)") |
      Dialog.set: Log.String(" (set)") |
  ELSE
      Log.String(" (не пойми что случилось...)")
  END;
  Log.String(", from = "); Log.Int(from);
  Log.String(", to = "); Log.Int(to);
  Log.Ln
    END Notifier;

END TestControl.
Ответить с цитированием
  (#3 (permalink)) Старый
imported_Next imported_Next вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 25.04.2006
По умолчанию 26.04.2006, 16:49

Да с Notifier элемента управления я разобрался. Он работает только в одну сторону: может изменить значение переменной. Вот только как этот элемент управления может узнать, что переменная поменялась кроме как через Dialog.UpdateReal(x) ?
Ответить с цитированием
  (#4 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию 27.04.2006, 12:52

Цитата:
Originally posted by Next
[b]как этот элемент управления может узнать, что переменная поменялась кроме как через Dialog.UpdateReal(x) ?
Он собственной "активностью" не обладает - сам не узнает пока ему не скажут; скажут с помощью Dialog.Update...
Ответить с цитированием
  (#5 (permalink)) Старый
imported_Next imported_Next вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 25.04.2006
По умолчанию 27.04.2006, 12:59

Понятно. Спасибо.
А что в BB обладает собственной "активностью"? Ведь что-то должно реагировать на к.-л. события.
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию 28.04.2006, 10:08

Цитата:
Originally posted by Next
[b]А что в BB обладает собственной "активностью"? Ведь что-то должно реагировать на к.-л. события.
Я Вас не совсем понимаю. Реакция на событие - это не "активность", а "пассивность". Активность, это, например, когда есть некий цикл, в котором периодически делается опрос состояния. Ну или просто традиционный поток с мониторами и т.п. вещами. Если Вам нужна активность, то в BlackBox она реализуется с помощью Services.Action. Почитайте документацию к модулю Services.
Ответить с цитированием
  (#7 (permalink)) Старый
imported_Next imported_Next вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 25.04.2006
По умолчанию 28.04.2006, 13:45

Буду изучать Services. Спасибо, что подсказали направление поиска.
После Delphi, где многие вещи (реализации) "скрыты" и сами собой разумеются ( тот же самый OnChange объекта), в ВВ мне приходиться долго разбираться. Самое интересное, что после недели копаний с ВВ, мне почему-то не хочеться возвращаться в Delphi Как-то ВВ притягивает...хотя многих вещей и не хватает. Еще раз спасибо за ваши ответы.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построить вектор, каждый элемент которого равен наибольшему количеству равных элемент abakuz Delphi 1 29.05.2011 01:02
Заменить каждый элемент на Т, если элемент - атом Алексей 7 Lisp 1 16.05.2011 23:08
Элемент управления Internet Explorer. Zayti .NET 0 13.11.2009 11:58
Как создать элемент управления нестандартной формы wisp Visual C++ 4 09.10.2007 18:19
Как сделать стандартный элемент управления недоступным Henrih .NET 8 09.07.2007 14:24
добавить элемент в произвольную позицию, исключить N-ый элемент из списка fire2004 Prolog 1 11.08.2006 16:50
Элемент управления Picture Control Apollo Visual C++ 1 12.05.2006 10:33
Элемент управления гиперссылка c++ WinAPI 4 22.12.2005 19:58
Минимальная программа на BlackBox sacred1972 Oberon 1 17.11.2005 13:58
Как получить BlackBox PROnya Oberon 12 22.02.2005 07:21
Как сделать так чтобы событие происходило при наведении мыши на элемент управления Алекс-Фантомас Visual C++ 3 20.10.2004 11:05



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов