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

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

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

Сообщение kreator » 18 Октябрь 2017, 15:04

Стандартный репорт. Из большой очереди. Заметили, что на 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. :)

Ответить