OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 23 Октябрь, 2018 17:42

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




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Непонятки с Dialog.Update
СообщениеДобавлено: Воскресенье, 03 Апрель, 2016 17:18 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1067
Откуда: СССР v2.0 rc 1
Набросал я в качестве проверки своей догадки тривиальный код:
TestGui
Код:
MODULE TestGui;
   IMPORT Log, Math;
   VAR
      Person*: RECORD
         First*: ARRAY 40 OF CHAR;
         Last*: ARRAY 40 OF CHAR;
         Age*: INTEGER;
      END;
END TestGui.

По этому коду нагенерил форму.
Во втором модуле задаю логику:
Код:
MODULE TestControl_gui;
   IMPORT g := TestGui, d:=Dialog;
   PROCEDURE Set1*;
   BEGIN
      g.Person.First := 'Фёдор';      
      g.Person.Last := 'Сумкин';
      g.Person.Age := 40;
      d.UpdateString(g.Person.First);
   END Set1;

   PROCEDURE Set2*;
      VAR
   BEGIN
      g.Person.First := 'Иван';
      g.Person.Last := 'Сидоров';
      g.Person.Age := 35;
      d.UpdateString(g.Person.First);
   END Set2;

END TestControl_gui.
^TestControl_gui.Set1
^TestControl_gui.Set2


А в итоге получаю обновление всех полей РАЗОМ!!! Хоть числа, хоть строки! Объясните, ЧЯДНТ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Непонятки с Dialog.Update
СообщениеДобавлено: Понедельник, 04 Апрель, 2016 17:39 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9011
Откуда: Россия, Орёл
Так Dialog.Update - это как Flush при работе с файлами.
ГАРАНТИРОВАННО донести обновленное состояние до контролов.

А так, уже после присваивания оно может поменяться сразу. Если окно двинули - или винду стукнуло форсировать перерисовку всех окон... И т.п.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Непонятки с Dialog.Update
СообщениеДобавлено: Понедельник, 04 Апрель, 2016 18:02 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1067
Откуда: СССР v2.0 rc 1
Илья Ермаков писал(а):
Так Dialog.Update - это как Flush при работе с файлами.
ГАРАНТИРОВАННО донести обновленное состояние до контролов.

А так, уже после присваивания оно может поменяться сразу. Если окно двинули - или винду стукнуло форсировать перерисовку всех окон... И т.п.

Хм. Вроде ничего не трогал....
В рабочий журнал не писал. Обращался к одному полю.
Конечно, в моём случае, оно даже хорошо. Но это получается недокументированное поведение?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Непонятки с Dialog.Update
СообщениеДобавлено: Вторник, 05 Апрель, 2016 19:53 
Модератор
Аватара пользователя

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

Вы записали в файл - но не вызвали Flush. Вы не можете быть уверены, что данные уже физически на диске - и при сбое питания не пропадут. Но вы понимаете, что когда-нибудь, через негарантированное время, они там окажутся.

Так и тут. Вы поменяли переменную - когда-нибудь, через негарантированное время, значение дойдёт до контрола на экране. В отличие от случая с файлом, Вас "когда-нибудь" совсем не устраивает - и Вы задействуете гарантированное "проталкивание" обновлений с помощью Update.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Непонятки с Dialog.Update
СообщениеДобавлено: Вторник, 05 Апрель, 2016 20:29 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1067
Откуда: СССР v2.0 rc 1
Хм. У меня вопросов бы не возникло, используй я Dialog.Update. Я использовал Dialog.UpdateString! Вот что смутило.
Надо привыкать, что всё в БлэкБоксе "документ")))


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

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


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

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


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

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