Bug in TProgress [Fixed]

Post Reply
User avatar
Enrico Maria Giordano
Posts: 8734
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Been thanked: 1 time
Contact:

Bug in TProgress [Fixed]

Post by Enrico Maria Giordano »

Please try the following sample without and with manifest file. Without manifest file it works fine (the bar is filled) while with manifest file the bar is empty. Any workaround?

Code: Select all | Expand

#include "Fivewin.ch"


FUNCTION MAIN()

    LOCAL oDlg, oPrg

    DEFINE DIALOG oDlg;
           SIZE 800, 600

    @ 1, 1 PROGRESS oPrg

    ACTIVATE DIALOG oDlg;
             ON INIT ( oPrg:SetRange( 0, 10 ),;
                       oPrg:SetPos( 10 ) );
             CENTER

    RETURN NIL


EMG
User avatar
Antonio Linares
Site Admin
Posts: 42395
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 10 times
Been thanked: 41 times
Contact:

Re: Bug in TProgress

Post by Antonio Linares »

Enrico,

It is a known bug when using a manifest file with progress bars

Please review samples\progres1.prg to see how to workaround it
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Enrico Maria Giordano
Posts: 8734
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Been thanked: 1 time
Contact:

Re: Bug in TProgress

Post by Enrico Maria Giordano »

Ok. :-(

I don't see any valid workaround in progres1.prg... :-(

EMG
User avatar
Enrico Maria Giordano
Posts: 8734
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Been thanked: 1 time
Contact:

Re: Bug in TProgress

Post by Enrico Maria Giordano »

This is a possible workaround:

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oDlg, oProg1, oProg2
   
   DEFINE DIALOG oDlg TITLE "Progress Bars"
   
   @ 1, 1 PROGRESS oProg1 SIZE 80, 12

   @ 1, 20 PROGRESS oProg2 SIZE 12, 50 VERTICAL
   
   @ 3,  9 BUTTON "Ok" ACTION oDlg:End()
   
   oDlg:bStart = { || Increase( oProg1, oProg2 ) }
   
   ACTIVATE DIALOG oDlg CENTER ;
      ON INIT ( oProg1:SetRange( 0, 100 ),;
                oProg2:SetRange( 0, 100 ) )
   
return nil  

function Increase( oProg1, oProg2 )

   local n

   for n = 1 to 100
      if n < oProg1:nMax
         oProg1:SetPos( n + 1 )
         oProg1:SetPos( n )
      else
         oProg1:SetRange( oProg1:nMin, oProg1:nMax + 1 )
         oProg1:SetPos( oProg1:nMax )
         oProg1:SetRange( oProg1:nMin, oProg1:nMax - 1 )
         oProg1:SetPos( oProg1:nMax )
      endif

      if n < oProg2:nMax
         oProg2:SetPos( n + 1 )
         oProg2:SetPos( n )
      else
         oProg2:SetRange( oProg2:nMin, oProg2:nMax + 1 )
         oProg2:SetPos( oProg2:nMax )
         oProg2:SetRange( oProg2:nMin, oProg2:nMax - 1 )
         oProg2:SetPos( oProg2:nMax )
      endif

      SysWait( 0.02 )
   next
   
return nil


EMG
User avatar
Antonio Linares
Site Admin
Posts: 42395
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 10 times
Been thanked: 41 times
Contact:

Re: Bug in TProgress

Post by Antonio Linares »

When I run progres1.prg, the progress bars get complete full
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Enrico Maria Giordano
Posts: 8734
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Been thanked: 1 time
Contact:

Re: Bug in TProgress

Post by Enrico Maria Giordano »

Yes, but only if you use a range 0 -116, that is not what we want.

EMG
User avatar
Enrico Maria Giordano
Posts: 8734
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Been thanked: 1 time
Contact:

Re: Bug in TProgress

Post by Enrico Maria Giordano »

My workaroud works with any range (I hope). The previous was with 0-100, this is with 0-10:

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oDlg, oProg1, oProg2
   
   DEFINE DIALOG oDlg TITLE "Progress Bars"
   
   @ 1, 1 PROGRESS oProg1 SIZE 80, 12

   @ 1, 20 PROGRESS oProg2 SIZE 12, 50 VERTICAL
   
   @ 3,  9 BUTTON "Ok" ACTION oDlg:End()
   
   oDlg:bStart = { || Increase( oProg1, oProg2 ) }
   
   ACTIVATE DIALOG oDlg CENTER ;
      ON INIT ( oProg1:SetRange( 0, 10 ),;
                oProg2:SetRange( 0, 10 ) )
   
return nil  

function Increase( oProg1, oProg2 )

   local n

   for n = 1 to 10
      if n < oProg1:nMax
         oProg1:SetPos( n + 1 )
         oProg1:SetPos( n )
      else
         oProg1:SetRange( oProg1:nMin, oProg1:nMax + 1 )
         oProg1:SetPos( oProg1:nMax )
         oProg1:SetRange( oProg1:nMin, oProg1:nMax - 1 )
         oProg1:SetPos( oProg1:nMax )
      endif

      if n < oProg2:nMax
         oProg2:SetPos( n + 1 )
         oProg2:SetPos( n )
      else
         oProg2:SetRange( oProg2:nMin, oProg2:nMax + 1 )
         oProg2:SetPos( oProg2:nMax )
         oProg2:SetRange( oProg2:nMin, oProg2:nMax - 1 )
         oProg2:SetPos( oProg2:nMax )
      endif

      SysWait( 1.02 )
   next
   
return nil


EMG
User avatar
Antonio Linares
Site Admin
Posts: 42395
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 10 times
Been thanked: 41 times
Contact:

Re: Bug in TProgress

Post by Antonio Linares »

very good :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply