Отображение ProgressWindow при печати из очереди

Обсуждение извечных проблем кларионовских (и не только) отчетов

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Отображение ProgressWindow при печати из очереди

Сообщение kreator »

Стандартный репорт. Из большой очереди. Заметили, что на ProgressWindow обновляется только ProgressBar. Оказалось, что при печати из очереди используется обход методов класса банальной вставкой из шаблона. Ну и ребята кое-что забыли добавить, на мой взгляд. Кому интересно, в файл ABREPORT.TPW нужно добавить вызов метода UpdateDisplay():

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

#AT (%WindowManagerMethodCodeSection,'Next', '(),BYTE'),Priority(1000),WHERE(%ReportDataSource='Queue')
    %ProcessObjectName.RecordsProcessed+=1
    GET(%ReportDataSourceQueueName,%ProcessObjectName.RecordsProcessed)
    IF ERRORCODE() THEN
       ReturnValue = Level:Notify
    ELSE
       ReturnValue = Level:Benign
    END
    IF ReturnValue = Level:Notify
        IF %ProcessObjectName.RecordsProcessed>RECORDS(%ReportDataSourceQueueName)
           SELF.Response = RequestCompleted
           POST(EVENT:CloseWindow)
           RETURN Level:Notify
        ELSE
           SELF.Response = RequestCancelled
           POST(EVENT:CloseWindow)
           RETURN Level:Fatal
        END
    #IF(%ThermometerUseVariable)
    ELSE
       Progress = %ProcessObjectName.RecordsProcessed / %ProcessObjectName.RecordsToProcess*100
       IF Progress > 100 THEN Progress = 100.
       IF Progress <> Progress:Thermometer
         %ThermometerUseVariable = Progress
         DISPLAY()
         %ProcessObjectName.UpdateDisplay()                                                                           ! *** KreatoR ***         
       END
    #ENDIF
    END
    RETURN Level:Benign
#ENDAT
We are hard at work… for you. :)
Ответить