Classe de régua de processamento.
Hierarquia
tSrvObject -> tControl -> tMeter
Descrição
Utilize a classe tMeter para criar um controle que exibe uma régua (gauge) de processamento, descrevendo o andamento de um processo atraves da exibição de uma barra horizontal.
Parâmetros
NTotal | Numérico. Número total de passos até o preenchimento da régua de processo. |
lPercentage | Lógico. Se .T. considera o passo de movimentação em porcentagem. |
nClrBar | Numérico. Cor da barra de andamento. |
Métodos
New
Descrição
Contrutor da classe.
Sintaxe
New([anRow], [anCol], [abSetGet], [anTotal], [aoWnd], [anWidth], [anHeight], [lPar8], [alPixel], [oPar10], [cPar11], [alNoPerc], [anClrPane], [nPar14], [anClrBar], [nPar16], [lPar17])
Parâmetros
anRow | Numérico, opcional. Coordenada vertical em pixels ou caracteres. |
anCol | Numérico, opcional. Coordenada horizontal em pixels ou caracteres. |
abSetGet | Bloco de código, opcional. Bloco de código no formato {|u| if( Pcount( )>0, <var>:= u, <var> ) } que o controle utiliza para atualizar a variável <var>. <var> deve ser tipo numérico. |
anTotal | Numérico, opcional. Numero total de passos até o preenchimento da régua de processo. |
aoWnd | Objeto, opcional. Janela ou controle onde o controle sera criado. |
anWidth | Numérico, opcional. Largura do controle em pixels. |
anHeight | Numérico, opcional. Altura do controle em pixels. |
lPar8 | Reservado. |
alPixel | Lógico, opcional. Se .T. as coordenadas informadas são em pixels, se .F. são em caracteres. |
oPar10 | Reservado. |
cPar11 | Reservado. |
alNoPerc | Lógico, opcional. Se .T. (padrão) não considera os passos de atualização em porcentagem. |
anClrPane | Numérico, opcional. Cor de fundo do controle. |
nPar14 | Reservado. |
anClrBar | Numérico, opcional. Cor da barra de andamento. |
nPar16 | Reservado. |
lPar17 | Reservado. |
Retorno
O objeto construído.
Set
Descrição
Atualiza a posição da régua de processamento.
Sintaxe
Set( [nVal] )
Parâmetros
nVal | Numérico, opcional. Novo valor da posição da régua de processamento. |
Retorno
NIL
Exemplo
#include “protheus.ch”
Static lRunning:=.F., lStop:=.F.
User Function Teste()
Local oDlg, oMeter, nMeter:=0, oBtn1, oBtn2
DEFINE MSDIALOG oDlg FROM 0,0 TO 400,400 TITLE “Teste”
// cria a régua
oMeter:= tMeter():New(10,10,{|u|if(Pcount()>0,nMeter:=u,nMeter)};
,100,oDlg,100,20,,.T.)
// botão para ativar andamento da régua
@ 30,10 BUTTON oBtn1 PROMPT “Run” OF oDlg PIXEL ACTION RunMeter(oMeter)
@ 50,10 BUTTON oBtn2 PROMPT “Stop” OF oDlg PIXEL ACTION lStop:=.T.
ACTIVATE MSDIALOG oDlg CENTERED
Return nil
Static Function RunMeter(oMeter)
If lRunning
Return
Endif
lRunning:= .T.
// inicia a régua
oMeter:Set(0)
While .T. .and. !lStop
// pára 1 segundo
Sleep(1000)
// atualiza a pintura da janela, processa mensagens do windows
ProcessMessages()
// pega valor corrente da régua
nCurrent:= Eval(oMeter:bSetGet)
nCurrent+=10
// atualiza régua
oMeter:Set(nCurrent)
if nCurrent==oMeter:nTotal
Return
endif
Enddo
lRunning:= .F.
lStop:= .F.
Return