Página 1 de 1
Será que essa barra progressiva funciona???
Enviado: 15 Fev 2008 18:35
por ERASMO ANDRIOLI
Olá Amigos...
Gostaria de saber dos Clippeiros se essa barra está correta no modo programável que está:
INDEX ON CONTROLE TAG 1 TO BNKANALI EVAL BARRA()
****************
function BARRA
****************
@15,15+(RECNO() / LASTREC()*49) SAY CHR(178) COLOR("B+/W")
return .T.
...Quem tiver outro exemplo mais prático que isso ou se o exemplo acima astiver com falhas, por favor nos mostre o caminho correto.
Abraços
Erasmo Andrioli
Sorriso-MT :xau
Enviado: 15 Fev 2008 22:15
por Pablo César
Eu acho que a sentença correta na função BARRA, deveria ser assim:
@15,15 SAY REPLICATE( CHR(178) , (((RECNO() / LASTREC()) * 100) /2 ) ) COLOR("B+/W")
Na seção de downloads daqui do fórum tem um exemplo que está um pouco mais elaborado com melhor layout. Compile na mão pois o arquivo BATCH está errado. Confira:
https://pctoledo.org/download/cop ... t&deonde=2
Enviado: 15 Fev 2008 22:20
por Maligno
Do jeito que está essa linha de indexação vai comer o processamento da máquina, pois a função Barra() será executada para cada registro encontrado. O melhor é incluir uma cláusula EVERY com um limitador. Detalhes no NG.

Barra progressiva para indexação
Enviado: 15 Fev 2008 22:29
por Pablo César
Tem razão Maligno. Então façamos alguma incrementações necessárias, inclusive eu não gosto de ficar executando a cada registro as funções LASTREC() e RECNO(), na minha opinião também são desnecessário.
Código: Selecionar todos
#define MTR_INCREMENT 20
TELA := SAVESCREEN(00,00,MAXROW(),MAXCOL())
@ 08,11 SAY "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»" COLOR "BG+/N"
@ 09,11 SAY "º º" COLOR "BG+/N"
@ 10,11 SAY "ºÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĺ" COLOR "BG+/N"
@ 11,11 SAY "º 0 10 20 30 40 50 60 70 80 90 100 º" COLOR "BG+/N"
@ 12,11 SAY "º ÚÄÙ....³....³....³....³....³....³....³....³....³....ÀÄ¿ º" COLOR "BG+/N"
@ 13,11 SAY "º ³ °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ³ º" COLOR "BG+/N"
@ 14,11 SAY "º ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ º" COLOR "BG+/N"
@ 15,11 SAY "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ" COLOR "BG+/N"
@ 09,24 SAY "Porcentagem dos arquivos organizados" COLOR "GR+/N"
USE CLIENTES
v_t:=LASTREC()
nRecsDone := 0
INDEX ON NOME TAG 1 TO ARQINDICE EVAL {|| BARRA() } EVERY MTR_INCREMENT
@ 13,16 SAY REPLICATE(CHR(219),51) // complementa o que faltou
?? CHR(7) // Fará uma sinal sonoro
FUNCTION BARRA()
nRecsDone := nRecsDone + MTR_INCREMENT
@ 13,16 SAY REPLICATE(CHR(219),(( ( nRecsDone/V_T ) * 100 ) / 2)) COLOR "GR+/N"
return .T.
Veja agora se ficou bom ?.
Enviado: 16 Fev 2008 11:58
por EANDRIOLI
FICOU MUITO BOM.... ÓTIMO
OBRIGADO PESSOAL...
ABRAÇOS :{
Enviado: 18 Fev 2008 22:39
por vagucs
Use a clausula EVERY dividindo o lastrec por 100, assim so vai chamar a rotina quando a porcentagem realmente for alterada.