Домой Классы Статические функции Перечисления (ENUM) Записи (RECORD)

{Long_operation}


CLASS {Long_operation} , UNTESTED, DESTRUCTORS, NATIVE:


Класс формы для автоматического отображения, когда обнаруживается выполнение длительной операции. В AL-IV, на каждой итерации каждого цикла по всему коду AL-IV, выполняется декремент глобального счетчика. При его обнулении, вызывается функция-заглушка, которая переинициализирует этот глобальный счетчик обычно значением 65535), и вызывает функцию, которая детектирует начало длительной операции. Длительной операция считается, если на протяжении более чем 1 секунды не произошел возврат из текущего обработчика события на форме. Так же, форма {Long_operation} позволяет отобразить прогресс длительной операции (если это предусмотрено вашим кодом). Для того, чтобы сделать это, следует обратиться к методу формы Long_operation, который возвращает (или создает и возвращает) экземпляр класса {Long_operation}, привязанный к этой форме, и использовать его методы Set_description, Set_progress и другие. Так же, есть метод Indicate, позволяющий сообщить форме прогресса длинной операции, что пока что программа не находится в той стадии, чтобы начинать отсчет 1 секунды (при этом сбрасывается время точки начала отсчета этой секунды).
Но основное предназначение этой формы состоит в том, чтобы позволить пользователю приостановить или прекратить длительную операцию (без принудительного завершения всего приложения, с сопутствующим крахом и потерей прочих результатов работы).
Имеется опция компилятора, позволяющая отключить работу с глобальным счетчиком и детектированием длительных операций. В этом случае так же целесообразно указать в настройках проекта путь к фиктивной реализации класса {Long_operation}, чтобы уменьшить число зависимостей и сократить код. Так же, возможно создать свою функцию заглушки и использовать возможность контроля итераций в AL-IV для своих целей.


IMPORT : {AL4_form} .

BASE CLASS {Form} .


STR Sender_alias , INIT



--------------------------------------------------------- 'visual controls'


METHOD Set_description ( STR D|escription_text )


Устанавливает описание длительной операции, планируемой для исполнения. Может так же использоваться для изменения описания в процессе выполнения такой операции.


METHOD Set_stage|_details ( STR D|etails_on_current_stage )


Устанавливает описание стадии длительной операции, планируемой или выполняемой.


METHOD Set_progress|_0_TO_100 ( REAL P|rogress_value )


Устанавливает значения прогресса выполнения длинтельной операции (необязательно, если этот метод не вызывался, прогресс будет просто зациклен).

BOOL Paused|_until_button_pressed_again , READ

Установлено в TRUE, если в начтоящее время операция "заморожена".


BOOL Cancelled|_operation , READ

TRUE, если операция была отменена (пользователем).



METHOD Indicate|_activity ( BOOL Proc|ess_messages ) , CALLBACK


Используйте этот метод для перезапуска счетчика 1 секунды до того, как подсистема AL-IV решит, что ваш код блоее "не отвечает". Передача параметра TRUE позволяет выполнить находящиеся в очереди события формы. Это создает впечатление "плавной" работы приложения на заднем плане, без необходимости использования механизма потоков ({Thread}).

BOOL Finished|_operation


END


См. так же с защищёнными членами