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/ |