Метод PopBounds |
Процедура восстанавливает ограничения из where (см. конструкцию lot языка SQL) либо пустые ограничения, если в where не было ограничений на эту таблицу, после этого проверяет, попадает ли текущая запись в ограничения, и если нет, то делает текущей первую в ограничениях.
procedure PopBounds (boundN : longInt);
boundN - номер диапазона или логической таблицы. Доступны идентификаторы диапазонов с префиксом "tb" и константы tn<имя узла>.
В данном примере по командам cmSetRestrictions и cmReSetRestrictions будет устанавливаться и сниматься диапазон по дате приема сотрудника. При этом таблица каждый раз перерисовывается так, чтобы видны были только те записи, которые содержатся в диапазоне.
interface example1; create view var loDate, hiDate : Date; as select * from Employee order by acceptDate // Описание ограничения по отбору записей по // диапазону даты bounds byDate = loDate<<=acceptDate and hiDate>>=acceptDate; browse viewEmployee; show at(,,,10); fields name; acceptDate; end; screen scEmployee; show at(,11,,); fields loDate: noProtect; hiDate: noProtect; buttons cmSetRestrictions; cmResetRestrictions; << Ограничения по дате: .@@@@@@@@ - @@@@@@@ <. Установить ограничения .> <. Снять ограничения .> >> end; handleEvent // Обработка события установки ограничения на // диапазон дат cmSetRestrictions: { PushBounds(tbByDate); if ((modifier getFirst Employee) = tsOk) // Обязательно нужно обновить таблицу на экране!!! RescanPanel(#Employee); } cmResetRestrictions: { popBounds(tbByDate); // Обработка события снятия ограничения на диапазон // дат if ((modifier getFirst Employee) = tsOk) // После снятия ограничения таблицу обязательно // обновим!!! RescanPanel(#Employee); } // Обработка событий вставки, удаления и обновления // записей cmInsertrecord: insert current Employee; cmUpDaterecord: update current Employee; cmDeleterecord: delete current Employee; end; end.