сбои в обновлении Browse

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Привет Всем !

Прошу подсказки Уважаемого сообщества в следующем вопросе:

Имеется Browse-окно програмы работающей с внешним устройстовм (кассовым аппаратом), т.е. окно, в котором есть ограничение (Single value) на номер смены и фильтр на номер документа (то бишь чека). Обе переменные локальные. Когда завершен расчет по чеку, то ставится маркер в TRUE на записи позиции чека что они проданы, счетчик номеров документов(чеков) увеличивается на единицу и вызывается обновление экрана: ForceRefresh = TRUE; DO RefreshWindow. Локальная переменная номера чека объявлена в сторожевых полях. Так вот иногда (именно не могу выявить закономерность) содержимое окна, после изменения значения переменной, которая указана в выражении фильтра Browse не изменяется, т.е. содержимое старого "чека" не уходит и экран не обновляется(не становится пустым) под новый чек.

Быть может в этой ситуации, для достижения стабильности, следует выполнять еще какие-то манипуляции или как-то по иному использовать переменные ивызывать обновление cодержимого Browse ?

Заренее благодарен,
Сергей
Сочи
Написал: ClaList(2)
Гость

Сообщение Гость »

Привет

Была такая же проблема,(не проходило обновление по сторожевому полю, (field1) пришлось заводить дублирующую переменную (field11), в которую бы писалось предыдущее значение основной переменной:
после того как,field1(счетчик)увеличился на 1

Код: Выделить всё

if field11<field1
forcerefresh=true
do refreshwindow
field11=field1
.
Кстати вместо refreshwindow, я пользую refreshpage(где это допустимо), работает стабильнее со сторожевыми полями(во многих случаях refreshwindow почему то не работает).

Дмитрий Гудков gudkov_net@mail.ru
Написал: ClaList(2)
Гость

Сообщение Гость »

Зря, батенька, зря!:)))
RefreshWindow вызывает рутинку SelectSort, которая намного более функциональна чем RefreshPage.
Кстати, если необходимо, SelectSort сама уже вызывает рутинку RefreshPage.
Так что САМЫЙ универсальный вариант - вызов именно рутинки RefreshWindow. А для того, что-бы все обновлялось как надо, без сбоев, просто установи перед ее вызовом

ForceRefresh = True.

Ну, а если не хочешь, что-бы при этом "дергались" другие бровзы на этом окне, то или используй методы ШВС для оптимизации перерисовки разных бровзов, или организуй ручками простейший селект прямо в RefreshWindow.
Благо - в ней достаточно нужных точек вставок!

Удачи!

=============================
С уважением, Олег А. Руденко.
Oleg_Rudenko@mail.ru
Oleg_Rudenko@mail333.com
Библиотека DynaLib
http://dynalib.narod.ru

Написал: ClaList(2)
Ответить