Barra de indexação / pesquiza
Moderador: Moderadores
- Vander
- Usuário Nível 3

- Mensagens: 214
- Registrado em: 23 Jul 2004 01:43
- Localização: João Monlevade - MG
Barra de indexação / pesquiza
Bom amigos
1 - Tem como criar uma barra de indexação que mostre op progresso baseado no total de registros a indexar, exemplo:
arquivo de clientes com 1000 registros
arquivo de estoque com 6000 registros
..
..
arquivo usuario 5 registros
total de registros a processar digamos 9000
então a barra de progresso irá mostrar o progresso basedo nos 9000 registros que é o total a processar.
Eu uso uma rotina em clipper / DOS mas não consegui passar para FW.
2 - Tem como criar barra de progresso para as pesquizas e relatórios ?
Espero que como sempre possam me ajudar e desde já agradeço.
vander
1 - Tem como criar uma barra de indexação que mostre op progresso baseado no total de registros a indexar, exemplo:
arquivo de clientes com 1000 registros
arquivo de estoque com 6000 registros
..
..
arquivo usuario 5 registros
total de registros a processar digamos 9000
então a barra de progresso irá mostrar o progresso basedo nos 9000 registros que é o total a processar.
Eu uso uma rotina em clipper / DOS mas não consegui passar para FW.
2 - Tem como criar barra de progresso para as pesquizas e relatórios ?
Espero que como sempre possam me ajudar e desde já agradeço.
vander
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinho
Acrescente este código ao .PRG principal
Lembre-se de altera o oWnd para o nome da variavel de objeto de sua Window.
@braços :?)
Acrescente este código ao .PRG principal
Código: Selecionar todos
FUNCTION dbProgress( cIndice, cMensagem )
LOCAL cComplete := LTRIM(STR(INT((RECNO()/LASTREC()) * 100)))
cMensagem := OemToAnsi( iif(cMensagem=nil,"Indexacao de ",cMensagem) )
MENSAGEM(OemToAnsi(cMensagem + cIndice + " " + cComplete + "% Completada."))
RETURN(.T.)
FUNCTION MENSAGEM( MENSAGEM, TEMPO )
MENSAGEM := OemToAnsi(MENSAGEM)
IF TEMPO <> NIL
MSGSTOP( MENSAGEM )
ELSE
[b]oWnd[/b]:SetMsg( MENSAGEM )
ENDIF@braços :?)
-
Stanis Luksys
- Colaborador

- Mensagens: 1329
- Registrado em: 18 Jun 2005 03:04
- Localização: São Paulo
- Contato:
Olá,
Se usar o eval aproveite e use a cláusula every, exemplo:
index on clientes to indice eval funcao evary 10
Assim a funcao do eval só é executada a cada 10 registros, bom para bancos grandes...
Falo...
Se usar o eval aproveite e use a cláusula every, exemplo:
index on clientes to indice eval funcao evary 10
Assim a funcao do eval só é executada a cada 10 registros, bom para bancos grandes...
Falo...
Stanis Luksys
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
-
Stanis Luksys
- Colaborador

- Mensagens: 1329
- Registrado em: 18 Jun 2005 03:04
- Localização: São Paulo
- Contato:
Amigo,
Para fazer uma contagem TOTAL é necessário antes vc abrir todos os DBFs e contar quantos registros cada um tem.
Depois implemetar uma função que incremete o registro atual ao total geral e vai tirando a porcentagem.
Isso pode ser útil para criar DUAS barras de progresso, conforme esta tela q vou postar, onde utilizei a miniGUI, que trabalha de maneira muito semelhante ao FiveWin.

Para fazer estas barras foi simples, controlo elas artraves da clausula EVAL do comando INDEX, conforme exemplo:
Note q a variavel "nTotaldeRegistros" foi obtida antes somando o total de todos os registros de todos os arquivos atarves com comando count ( ou da funcao lastRec(), tanto faz )
Espero ter colaborado de alguma forma, apesar de ter deixado um pouco de utilizar o FiveWin, sempre achei a sintaxe muito parecida com a da MiniGUI, e tenho certeza que este código pode ser adaptado para a FW.
Falou...
Para fazer uma contagem TOTAL é necessário antes vc abrir todos os DBFs e contar quantos registros cada um tem.
Depois implemetar uma função que incremete o registro atual ao total geral e vai tirando a porcentagem.
Isso pode ser útil para criar DUAS barras de progresso, conforme esta tela q vou postar, onde utilizei a miniGUI, que trabalha de maneira muito semelhante ao FiveWin.
Para fazer estas barras foi simples, controlo elas artraves da clausula EVAL do comando INDEX, conforme exemplo:
Código: Selecionar todos
// no programa que indexa
index on xxx to xxxx eval Prog_Ind()
function Prog_Ind()
nReg_Processados := nReg_Processados + 1
oJanela.oBarraProgresso1.value := (RecNo()/LastRec())*100
oJanela.oBarraProgresso2.value := (nReg_Processados/nTotaldeRegistros)*100
return .t.Espero ter colaborado de alguma forma, apesar de ter deixado um pouco de utilizar o FiveWin, sempre achei a sintaxe muito parecida com a da MiniGUI, e tenho certeza que este código pode ser adaptado para a FW.
Falou...
Stanis Luksys
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinho
Voce ira precisar de algo assim:
@braços :?)
Voce ira precisar de algo assim:
Código: Selecionar todos
// Testing FiveWin own meter controls
#include "FiveWin.ch"
static oDlg
//----------------------------------------------------------------------------//
function Main()
local nActual := 0, oMeter
nActual1 := 0
nActual2 := 0
nTotal1 := 50 // registros em cada dbf devendo ser atualizado para o recco() atual
nTotal2 := 100 // registros totais
DEFINE DIALOG oDlg FROM 1, 1 TO 20, 44 ;
TITLE "Testing the Meter controls"
@ 2, 2 METER oMeter1 VAR nActual1 TOTAL nTotal1 OF oDlg SIZE 135, 10
@ 4, 2 METER oMeter2 VAR nActual2 TOTAL nTotal2 OF oDlg SIZE 135, 10
@ 5, 12 BUTTON "&Increase" OF oDlg SIZE 40, 14 ;
ACTION (oMeter1:Set( nActual1 + 1 ),oMeter2:Set( nActual2 + 1 ),;
iif(nActual1>=nTotal1,oMeter1:Set( 0 ),0))
ACTIVATE DIALOG oDlg CENTERED
return nil
//----------------------------------------------------------------------------//
procedure AppSys // XBase++ requirement
return
//----------------------------------------------------------------------------//Olá Vander,
Se quiser um meter na barra de mensagem, verifique minha classe em www.fivewin.com.br em dicas + dicas, procure por VBar ou VMsgBar, vai encontrar tanto para clipper como para [x]Harbour
Se quiser um meter na barra de mensagem, verifique minha classe em www.fivewin.com.br em dicas + dicas, procure por VBar ou VMsgBar, vai encontrar tanto para clipper como para [x]Harbour
Abraços
Vagner Wirts
São Paulo-Brasil
Vagner Wirts
São Paulo-Brasil
