OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 14:33

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Нерасширяемый FormControllers.Focus
СообщениеДобавлено: Понедельник, 04 Декабрь, 2017 14:56 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Ср.:

TextControllers
Код:
   PROCEDURE Focus* (): Controller;
      VAR v: Views.View; c: Containers.Controller;
   BEGIN
      v := Controllers.FocusView();
      IF (v # NIL) & (v IS TextViews.View) THEN
         c := v(TextViews.View).ThisController();
         IF (c # NIL) & (c IS Controller) THEN RETURN c(Controller)
         ELSE RETURN NIL
         END
      ELSE RETURN NIL
      END
   END Focus;


Всё ОК.

В формах же, видимо, застрял какой-то более древний вариант (там есть древности в формах):

FormControllers
Код:
      PollFocusMsg = RECORD (Controllers.PollFocusMsg)
         c: Controller
      END;

   PROCEDURE Focus* (): Controller;
      VAR msg: PollFocusMsg;
   BEGIN
      msg.c := NIL;
      Controllers.Forward(msg);
      RETURN msg.c
   END Focus;


Т.е. Focus() признаёт только стандартную реализацию контроллера форм.

Нужно бы в сборках переделать.

Пока придётся в своей реализации реагировать на PollFocusMsg по модулю тега типа и выставлять поле c через SYSTEM.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нерасширяемый FormControllers.Focus
СообщениеДобавлено: Понедельник, 04 Декабрь, 2017 15:27 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
"Ничего не понимаю". Что переделать и зачем?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нерасширяемый FormControllers.Focus
СообщениеДобавлено: Вторник, 05 Декабрь, 2017 14:43 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
У меня другие формы (и View, и Model, и Controller). Все наследники базовых типов.

FormControllers.Focus даёт на них NIL (и некоторые стандартные тулзы для форм "не признают").

Варианты изменения:
1) Экспортировать это внутреннее сообщение из FormControllers, чтоб другие реализации тоже могли его обрабатывать.
2) Переделать Focus() так, как он обычно и делается (пример - из TextControllers).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нерасширяемый FormControllers.Focus
СообщениеДобавлено: Вторник, 05 Декабрь, 2017 16:07 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Ага, теперь понятно. Возможно, предполагалось, что FormControllers.Focus должно возвращать только стандартные формы.
Nогда есть еще вариант: перенести HandleCtrlMsg из StdController в Controller.
А вот насчет "обычно и делается" не согласен, так только в TextControllers.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нерасширяемый FormControllers.Focus
СообщениеДобавлено: Вторник, 05 Декабрь, 2017 16:12 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Кстати, у нас же есть Containers.Focus. А поскольку формы и тексты суть контейнеры, вот такая процедура подойдет для обоих
Код:
PROCEDURE Focus* (): Controller;
  VAR c: Containers.Controller;
BEGIN
   c := Containers.Focus();
   IF (c # NIL) & (c IS Controller) THEN RETURN c(Controller) ELSE RETURN NIL END
END Focus;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нерасширяемый FormControllers.Focus
СообщениеДобавлено: Среда, 06 Декабрь, 2017 20:03 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Ну да.
Но суть предложения - внести какие-то изменения в FotmControllers.
Пока пришлось использовать SYSTEM в своём контроллере для совместимости

Я думаю, что это у них какой-то древний хвост. Формы у них содержат какие-то рудименты в разных местах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нерасширяемый FormControllers.Focus
СообщениеДобавлено: Суббота, 09 Декабрь, 2017 13:15 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Рудиментов там везде полно, но вот насчет данного случая сомневаюсь. Ведь если внести изменения, то эта фунция становится и ненужной. Проверить, что контролер нужного типа любой модуль может и сам.


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

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


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

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


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

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB