Skip to the content.

Exemplo de Manipulação de Barras de Progresso

A classe SysLibProgressBar tem como objetivo facilitar a manipulação de barras de progresso.

/**
 * Teste da classe SysLibProgressBar com uma barra de progresso
 */
user function TstPrgBar1()

  local oBar := SysLibProgressBar():new()

  oBar:setAction({|| runSimpleProcess(oBar) })
  oBar:start()

  MsgInfo("Done")

return

/**
 * Processamento usando a classe SysLibProgressBar com uma barra de progresso
 */
static function runSimpleProcess(oBar)

  local nI     := 0
  local nSteps := 40

  oBar:setSteps(nSteps)

  for nI := 1 to nSteps

    oBar:increment()

    Sleep(500)

  next nI

return .T.


/**
 * Teste da classe SysLibProgressBar com duas barras de progresso
 */
user function TstPrgBar2()

  local cText  := "Starting..."
  local cTitle := "SysLibProgressBar - Two Bars"
  local oBar   := SysLibProgressBar():new()

  oBar:setAction({|| runComplexProcess(oBar) }, cText, cTitle)
  oBar:setTwoBars(.T.)
  oBar:start()

  MsgInfo("Done")

return

/**
 * Processamento usando a classe SysLibProgressBar com duas barras de progresso
 */
static function runComplexProcess(oBar)

  local nI     := 0
  local nSteps := 3

  oBar:setFirstBarSteps(nSteps)

  for nI := 1 to nSteps

    oBar:incrementFirstBar("Step " + AllTrim(Str(nI)))

    runSubProcess(oBar)

  next nI

return

/**
 * Exemplo de subprocesso para teste da classe SysLibProgressBar com duas barras de progresso
 */
static function runSubProcess(oBar)

  local nI     := 0
  local nSteps := 10

  oBar:setSecondBarSteps(nSteps)

  for nI := 1 to nSteps

    oBar:incrementSecondBar("Doing something at " + AllTrim(Str(nI)) + " of " + AllTrim(Str(nSteps)) + " ...")

    Sleep(500)

  next nI

return

Essa classe é uma abstração da função Processa e da classe MsNewProcess.


Voltar