FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour StartThread() - Start a progress bar windows
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
StartThread() - Start a progress bar windows
Posted: Tue Jul 22, 2014 07:32 PM
Señores, como hago esto en xHARBOUR y FiveWin?

Code (fw): Select all Collapse
/*
StartThread() // Start a progress bar windows 
aFiles := DirectoryRecurse(PathPictArt + "*.jpg") 
StopThread() // Stop and close this windows 
*/

PROCEDURE Main

   LOCAL oThread := Thread():new() // create thread object

   CLS

   oThread:start( "Sum", 10000 ) // sum numbers from 1

   // to 10000
   DO WHILE .T. // display characters during

      ?? "." // the calculation

      Sleep(10)

      IF ! oThread:active // Check if thread still runs
         EXIT
      ENDIF

   ENDDO

   ? "The sum is:", oThread:result

RETURN

FUNCTION Sum( nNumber )

   LOCAL i, nSum := 0

   FOR i:=1 TO nNumber

      nSum += i

      IF i % 100 == 0 // progress display
           DispOutAt( MaxRow(), 0, i )
      ENDIF

   NEXT

RETURN nSum


Gracias, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: StartThread() - Start a progress bar windows
Posted: Wed Jul 23, 2014 01:32 AM
Podría ser algo así:
Code (fw): Select all Collapse
#include "fivewin.ch"
STATIC oSay
PROCEDURE Main

   LOCAL nSum , oDlg, j := " "

   DEFINE DIALOG oDlg TITLE 'Start a progress bar windows' ;
                SIZE 565, 480

   @  10, 10 SAY oSay VAR j SIZE 40, 30 OF oDlg PIXEL
      
   ACTIVATE DIALOG oDlg NOWAIT CENTERED 

   MsgInfo("The sum is:" + STR( Sum(1000000) ))
RETURN

STATIC FUNCTION Sum( nNumber )

   LOCAL i, nSum := 0

   FOR i:=1 TO nNumber

      nSum += i

      IF i % 100 == 0 // progress display
           oSay:SetText(STR(i))
      ENDIF

   NEXT

RETURN nSum

Continue the discussion