Page 1 of 1

How do I make sure that there is no stop after drawing?

Posted: Sat Jul 25, 2020 10:35 pm
by Eugene Lutsenko
I have all the charts drawn normally, but after writing the chart as a file, it stops. To proceed further it is necessary to press Esc. If there are a lot of charts, it becomes difficult. Is there any way to prevent this stop from happening?

Code: Select all

   ****** Цикл по будущим сценариям *******************************

   SELECT DrawScen
   DBGOTOP()
   DO WHILE .NOT. EOF()

      PUBLIC X_MaxW := 1800, Y_MaxW := 900           // Размер графического окна для отображения когнитивных диаграмм в пикселях
      PUBLIC nXSize := 1800
      PUBLIC nYSize :=  900
      
      oScr := DC_WaitOn('Немного подождите! Идет формирование изображения в памяти и его масштабирование',,,,,,,,,,,.F.)
      
      // Create new bitmap with given size
      oPS := XBPPRESSPACE() :new() :Create()
      oBMP := XBPBITMAP() :New() :Create()
*     oBMP:Make( nXSize, nYSize, nPlanes, nBits )
      oBMP:Make( nXSize, nYSize )
      oBMP:presSpace( oPS )
      
      // here your GRA* Code 
      
      **** Закрасить фон прямоугольника ***************
*     GraSetColor( oPS, GRA_CLR_WHITE, GRA_CLR_WHITE )
      GraSetColor( oPS, BD_LIGHTGREY, BD_LIGHTGREY )
      GraBox( oPS, { 0, 0 }, { nXSize, nYSize }, GRA_FILL ) 
      
      *########################################################################################################################################
      DrawScenario(oPS, Kod, Name, Kod_Sc, N_PointsScenario, mPar)                                         // Графическая функция <<<===#######
      *########################################################################################################################################
      
      *My image original, my image scaled
      
      DC_Impl(oScr)                                                   

      SELECT DrawScen

      DO CASE
         CASE mPar = 'Cls'

              ****** Запись полноразмерного графического файла в папку: M_PathAppl+"\FutureScenarios\"
              DIRCHANGE(M_PathAppl)                                   // Перейти в папку текущего приложения
              IF FILEDATE("FutureScenarios",16) = CTOD("//")
                 DIRMAKE("FutureScenarios")
                 aMess := {}
                 AADD(aMess, L('В папке текущего приложения: "'+UPPER(ALLTRIM(M_PathAppl))+'"'))
                 AADD(aMess, L('не было директории "FutureScenarios" для будущих сценариев и она была создана!'))
                 AADD(aMess, L('В эту папку записываются исходные изображения высокого качества (без масштабирования)'))
                 LB_Warning(aMess, L('2.1. Классификационные шкалы и градации' ))
              ENDIF
              DIRCHANGE(M_PathAppl+"\FutureScenarios\")                  // Перейти в папку Futurecenarios
              cFileName = 'FutureScen'+'-'+ALLTRIM(STRTRAN(STR(Kod,mNRazr),' ','0'))+'-Splain.jpg'

         CASE mPar = 'Atr'

              ****** Запись полноразмерного графического файла в папку: M_PathAppl+"\PastScenarios\"
              DIRCHANGE(M_PathAppl)                                   // Перейти в папку текущего приложения
              IF FILEDATE("PastScenarios",16) = CTOD("//")
                 DIRMAKE("PastScenarios")
                 aMess := {}
                 AADD(aMess, L('В папке текущего приложения: "'+UPPER(ALLTRIM(M_PathAppl))+'"'))
                 AADD(aMess, L('не было директории "PastScenarios" для прошлых сценариев и она была создана!'))
                 AADD(aMess, L('В эту папку записываются исходные изображения высокого качества (без масштабирования)'))
                 LB_Warning(aMess, L('2.2. Описательные шкалы и градации' ))
              ENDIF
              DIRCHANGE(M_PathAppl+"\PastScenarios\")                  // Перейти в папку Futurecenarios
              cFileName = 'PastScen'+'-'+ALLTRIM(STRTRAN(STR(Kod,mNRazr),' ','0'))+'-Splain.jpg'

      ENDCASE
      
      ERASE(cFileName)
      oBMP:SaveFile(cFileName,XBPBMP_FORMAT_JPG)
      
      IF nWidth > 1800
         FullView( cFileName, "по верху", 65 )                // Визуализация полноразмерного файла на мониторе высокого разрешения
      ELSE
         ****** Формирование с помощью bmp2bmp() и отображение масштабированного изображения
         aNewSize := {nWidth,nHeight-29}                      // Новый размер изображения (еще немного уменьшается, чтобы не рисовать по панели задач)
         oBMP:loadFile(cFileName)                             // Загрузка полноразмерного изображения
         oRet := BMP2BMP(oBMP,aNewSize)                       // Масштабирование изображения
         cFileNameScale = SUBSTR(cFileName,1,AT(".jpg",cFileName)-1)+"_scaled.jpg"
         ERASE(cFileNameScale)
         oRet:saveFile(cFileNameScale,XBPBMP_FORMAT_JPG)      // Запись масштабированного графического файла в в папку приложения для визуализации
         FullView( cFileNameScale, "по верху", 0 )            // Визуализация масштабированного графического файла на мониторе ограниченного разрешения
      
      ENDIF
      DIRCHANGE(M_PathAppl)                                   // Перейти в папку текущего приложения

      SELECT DrawScen
      DBSKIP(1)
   ENDDO
[/size]

У меня все графики нормально рисуется, но после записи графика в виде файла происходит остановка. Чтобы двигаться дальше надо нажать Esc. Если графиков много, то это становится затруднительным. Есть ли возможность как-то сделать, чтобы этой остановки не происходило?

Re: How do I make sure that there is no stop after drawing?

Posted: Sun Jul 26, 2020 6:04 pm
by Auge_Ohr
hi,

have DC_WaitOn() "stopped" :?:

---

don´t declare PUBLIC in loop
destroy Object after print before next loop

use Debugger

Re: How do I make sure that there is no stop after drawing?

Posted: Mon Jul 27, 2020 8:35 am
by Eugene Lutsenko
Jimmi!
How do I do this: "destroy Object after print before next loop"?

Re: How do I make sure that there is no stop after drawing?

Posted: Thu Jul 30, 2020 11:04 am
by Eugene Lutsenko
I realized that if you don't want to stop the process after showing an image, you don't need to show it at all. Then let users view all the images in the folder at once