OberonCore
https://forum.oberoncore.ru/

Непонятки с Dialog.Update
https://forum.oberoncore.ru/viewtopic.php?f=24&t=5655
Страница 1 из 1

Автор:  prospero78 [ Воскресенье, 03 Апрель, 2016 17:18 ]
Заголовок сообщения:  Непонятки с Dialog.Update

Набросал я в качестве проверки своей догадки тривиальный код:
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


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

Автор:  Илья Ермаков [ Понедельник, 04 Апрель, 2016 17:39 ]
Заголовок сообщения:  Re: Непонятки с Dialog.Update

Так Dialog.Update - это как Flush при работе с файлами.
ГАРАНТИРОВАННО донести обновленное состояние до контролов.

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

Автор:  prospero78 [ Понедельник, 04 Апрель, 2016 18:02 ]
Заголовок сообщения:  Re: Непонятки с Dialog.Update

Илья Ермаков писал(а):
Так Dialog.Update - это как Flush при работе с файлами.
ГАРАНТИРОВАННО донести обновленное состояние до контролов.

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

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

Автор:  Илья Ермаков [ Вторник, 05 Апрель, 2016 19:53 ]
Заголовок сообщения:  Re: Непонятки с Dialog.Update

Почему?

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

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

Автор:  prospero78 [ Вторник, 05 Апрель, 2016 20:29 ]
Заголовок сообщения:  Re: Непонятки с Dialog.Update

Хм. У меня вопросов бы не возникло, используй я Dialog.Update. Я использовал Dialog.UpdateString! Вот что смутило.
Надо привыкать, что всё в БлэкБоксе "документ")))

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/