Meterex con porcentaje.
- karinha
- Posts: 7942
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 3 times
- Contact:
Meterex con porcentaje.
Meterex con porcentaje.
¿Alguien tiene un ejemplo con METEREX con porcentaje?
Muchas gracias.
¿Alguien tiene un ejemplo con METEREX con porcentaje?
Muchas gracias.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
- FranciscoA
- Posts: 2164
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Meterex con porcentaje.
Karinha, el ejemplo anterior modificado. Espero que te sirva.
//---------------------------------------------------------------------
Saludos.
//---------------------------------------------------------------------
Code: Select all | Expand
Function ReIndexar(aAlias, lTodo)
//local oDlg, oAnimate, oMeter1, oMeter2, oSay1, oSay2, oSay3, oBtnCancel
local oDlg, oAnimate, oMeter1, oMeter2, oSay1, oSay2, oSay3, oSay4, oBtnCancel
local lEnd:=.f.
local n:=0, nMonto1:=0, nMonto2:=0
local oAnimate2
local nProg,nProg2
DEFAULT lTodo:=.f.
DEFINE DIALOG oDlg RESOURCE "CopyFiles" TRANSPARENT ;
TITLE "Creando ficheros indices (Reindexando)"
REDEFINE SAY oSay1 ID 110 OF oDlg //COLOR nClrTxt
REDEFINE SAY oSay2 ID 120 OF oDlg //COLOR nClrTxt
REDEFINE SAY oSay3 ID 140 OF oDlg //COLOR nClrTxt
REDEFINE METEREX oMeter1 VAR nProg ID 130 TOTAL 50 ROUND ; // ROUNDSIZE 6 //;
GRADIENT TRACK { { 1/2, nRGB( 198, 203, 213 ), nRGB( 219, 224, 233 ) },; //fondo
{ 1/2, nRGB( 224, 238, 237 ), nRGB( 224, 238, 237 ) } } ;
LINECOLORS nRGB( 110, 151,204 ), CLR_WHITE //Borde
REDEFINE METEREX oMeter2 VAR nProg2 ID 150 TOTAL 50 ROUND ; // ROUNDSIZE 6 //;
GRADIENT CHUNK { { 1/2, nRGB( 255, 251, 229 ), nRGB( 250, 223, 143 ) } , ; //barra
{ 1/2, nRGB( 244, 194, 51 ), nRGB( 252, 235, 173 ) } } ;
LINECOLORS nRGB( 110, 151,204 ), CLR_WHITE //borde
REDEFINE SAY oSay4 ID 4001 OF oDlg
REDEFINE BUTTON oBtnCancel ID 2 OF oDlg //;
***ACTION ( lEnd := .t., SysRefresh(), MisAreas(), oAnimate:Stop(), MsgStop("Reindexacion ha sido abortada por el usuario.","Advertencia"), oDlg:End() )
oMeter2:nTotal = LEN(aIndices)
nTotAvance:=0
nFactorAv:= 100/len(aIndices)
oDlg:bStart := { || oBtnCancel:Hide(),;
oAnimate:=TGif():New( oDlg, ".\Clip1.gif", 1,oDlg:nLeft()+40),;
oAnimate2:=TGif():New( oDlg, ".\RelojArena.gif", 1,oDlg:nWidth()-120),;
Reindexe( aAlias, oSay1, oSay2, oSay3, oSay4, oMeter1, oMeter2, @lEnd, oDlg, lTodo ) }
//Reindexe( aAlias, oSay1, oSay2, oSay3, oMeter1, oMeter2, @lEnd, oDlg, lTodo ) }
ACTIVATE DIALOG oDlg CENTERED
oAnimate:Stop()
oAnimate2:Stop()
SysRefresh()
Return NIL
//---------------------------------------------------------------------------
//Function Reindexe( aAlias, oSay1, oSay2, oSay3, oMeter1, oMeter2, lEnd, oDlg, lTodo )
Function Reindexe( aAlias, oSay1, oSay2, oSay3, [b]oSay4[/b], oMeter1, oMeter2, lEnd, oDlg, lTodo )
local n:=0
local nInicia:=Seconds(),nFinaliza:=0
oMeter2:Set( 0 )
For n := 1 to Len( aAlias )
IF ! File( aAlias[ n ]+".dbf" )
MsgInfo( "Fichero no encontrado: " + aAlias[ n ], "Advertencia" )
loop
ELSE
DBSELECTAREA( aAlias[n] )
oSay1:SetText( "Base de Datos Actual: " + upper(aAlias[n]) )
If UPPER( aAlias[n] )="MCONTAB"
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,oSay4,"mcontab->cuenta+mcontab->scuenta+mcontab->sscuenta+mcontab->ssscuenta+mcontab->sssscuenta","MCONTAB" )
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,oSay4,"mcontab->nombre","MCONTNOM" )
ElseIf UPPER( aAlias[n] )="COMPROBD"
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,oSay4,"COMPROBD->NUMDOC","COMPROBD" )
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,oSay4,"COMPROBD->CTA+COMPROBD->SCTA+COMPROBD->SSCTA+COMPROBD->SSSCTA+COMPROBD->SSSSCTA","COMPDCTA" )
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,oSay4,"COMPROBD->FECHEMIS","COMPDFEC" )
ElseIf UPPER( aAlias[n] )="NOTASDC"
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,oSay4,"NOTASDC->numdoc","NOTASDC" )
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,oSay4,"NOTASDC->cta+NOTASDC->scta+NOTASDC->sscta+NOTASDC->ssscta+NOTASDC->sssscta","NOTASCTA" )
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,oSay4,"NOTASDC->FECHEMIS","NOTASFEC" )
Endif
ENDIF
Next
nFinaliza:= (Seconds()-nInicia)/60
if lTodo
MisAreas()
WritePProString("config","UltReindex",Dtoc(date()),cIniFile)
SysRefresh()
MsgWait("Reindexación completada." + " Tiempo (Minutos): "+alltrim(str(nFinaliza)),,2)
endif
SysRefresh()
oDlg:End()
return(NIL)
//----------------------------------------------------------------
//Function IntegIndex( oSay2,oMeter1,oMeter2,oSay3,Campos,cNombIndice )
Function IntegIndex( oSay2,oMeter1,oMeter2,oSay3,oSay4,Campos,cNombIndice )
local nVar, nStep, nTotal
local nPorcAvance
oSay2:SetText( "Integrando Indice " + cNombIndice )
nTotal := LastRec()
nStep := Max( Int( nTotal * .02 ), 1 ) // actualizar el meter cada 2% del progreso es mas rapido que por cada registro
nVar := 0
oMeter1:nTotal = nTotal
oMeter1:Set( 0 )
nTotAvance+=1
nPorcAvance:=Int(nTotAvance * nFactorAv)
INDEX ON &(Campos) TO &(cNombIndice);
EVAL {|| oMeter1:Set( nVar += nStep ) , SysRefresh(), .t. } EVERY nStep
oMeter1:Set( nTotal )
oMeter2:Set( nTotAvance )
oSay3:SetText( "Indices creados: "+Transform(nTotAvance,"99,999,999") )
oSay4:SetText( Transform(nPorcAvance,"999.99 %") )
Return nil
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- karinha
- Posts: 7942
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 3 times
- Contact:
Re: Meterex con porcentaje.
Gracias Francisco, asi que posible voy probar.
Salu2.
Salu2.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
- FranciscoA
- Posts: 2164
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Meterex con porcentaje.
Last edited by FranciscoA on Mon Feb 24, 2014 8:40 pm, edited 2 times in total.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- karinha
- Posts: 7942
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 3 times
- Contact:
Re: Meterex con porcentaje.
Gracias,
http://www.4shared.com/photo/dHNqGIgLba/index.html
el porcentage és por fuera del meterex?
Salu2
http://www.4shared.com/photo/dHNqGIgLba/index.html
el porcentage és por fuera del meterex?
Salu2
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
- FranciscoA
- Posts: 2164
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Meterex con porcentaje.
Asi es, Karinha. Aún no he revisado la classe para ver las posibilidades.
Saludos.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- FranciscoA
- Posts: 2164
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Meterex con porcentaje.
Karinha, encontré dos soluciones:
1a:
2a: Modificando la Class TMETEREX, al final, en el METHOD PAINT():
Yo prefiero la modificacion a TMETEREX porque asi, los porcentajes son automaticos.
Tambien se podría agregar una DATA por si se quiere utilizar o no, el porcentaje, o un nuevo method. Esperemos las obsevaciones de su creador.
Aun no he tratado con Meterex vertical.
Saludos.
1a:
Code: Select all | Expand
//---------------------------------------------------------------------
Function ReIndexar(aAlias, lTodo)
local oDlg, oAnimate, oMeter1, oMeter2, oSay1, oSay2, oSay3, oBtnCancel
local lEnd:=.f.
local n:=0, nMonto1:=0, nMonto2:=0
local oAnimate2
local nProg,nProg2
DEFAULT lTodo:=.f.
DEFINE DIALOG oDlg RESOURCE "CopyFiles" TRANSPARENT ;
TITLE "Creando ficheros indices (Reindexando)"
REDEFINE SAY oSay1 ID 110 OF oDlg //COLOR nClrTxt
REDEFINE SAY oSay2 ID 120 OF oDlg //COLOR nClrTxt
//REDEFINE PROGRESS oMeter1 ID 130 OF oDlg
REDEFINE SAY oSay3 ID 140 OF oDlg //COLOR nClrTxt
//REDEFINE PROGRESS oMeter2 ID 150 OF oDlg
REDEFINE METEREX oMeter1 VAR nProg ID 130 TOTAL 50 ROUND ; // ROUNDSIZE 6 //;
GRADIENT TRACK { { 1/2, nRGB( 198, 203, 213 ), nRGB( 219, 224, 233 ) },; //fondo
{ 1/2, nRGB( 224, 238, 237 ), nRGB( 224, 238, 237 ) } } ;
LINECOLORS nRGB( 110, 151,204 ), CLR_WHITE //Borde
REDEFINE METEREX oMeter2 VAR nProg2 ID 150 TOTAL 50 ROUND ; // ROUNDSIZE 6 //;
GRADIENT CHUNK { { 1/2, nRGB( 255, 251, 229 ), nRGB( 250, 223, 143 ) } , ; //barra
{ 1/2, nRGB( 244, 194, 51 ), nRGB( 252, 235, 173 ) } } ;
LINECOLORS nRGB( 110, 151,204 ), CLR_WHITE //borde
REDEFINE BUTTON oBtnCancel ID 2 OF oDlg //;
***ACTION ( lEnd := .t., SysRefresh(), MisAreas(), oAnimate:Stop(), MsgStop("Reindexacion ha sido abortada por el usuario.","Advertencia"), oDlg:End() )
oMeter2:nTotal = LEN(aIndices)
nTotAvance:=0
nFactorAv:= 100/len(aIndices)
oMeter2:bPainted := {|| oMeter2:Say( oMeter2:nHeight/3, (oMeter2:nWidth/2)-40, Str(Int(nPorc))+" %", , , , .t., .t., 0 ) } //Quitar esto si modificas la TMETEREX
oDlg:bStart := { || oBtnCancel:Hide(),;
oAnimate:=TGif():New( oDlg, ".\Clip1.gif", 1,oDlg:nLeft()+40),;
oAnimate2:=TGif():New( oDlg, ".\RelojArena.gif", 1,oDlg:nWidth()-120),;
Reindexe( aAlias, oSay1, oSay2, oSay3, oMeter1, oMeter2, @lEnd, oDlg, lTodo ) }
ACTIVATE DIALOG oDlg CENTERED
oAnimate:Stop()
oAnimate2:Stop()
SysRefresh()
Return NIL
//---------------------------------------------------------------------------
Function Reindexe( aAlias, oSay1, oSay2, oSay3, oMeter1, oMeter2, lEnd, oDlg, lTodo )
local n:=0
local nInicia:=Seconds(),nFinaliza:=0
oMeter2:Set( 0 )
For n := 1 to Len( aAlias )
IF ! File( aAlias[ n ]+".dbf" )
MsgInfo( "Fichero no encontrado: " + aAlias[ n ], "Advertencia" )
loop
ELSE
DBSELECTAREA( aAlias[n] )
oSay1:SetText( "Base de Datos Actual: " + upper(aAlias[n]) )
If UPPER( aAlias[n] )="MCONTAB"
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,"mcontab->cuenta+mcontab->scuenta+mcontab->sscuenta+mcontab->ssscuenta+mcontab->sssscuenta","MCONTAB" )
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,"mcontab->nombre","MCONTNOM" )
ElseIf UPPER( aAlias[n] )="COMPROBD"
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,"COMPROBD->NUMDOC","COMPROBD" )
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,"COMPROBD->CTA+COMPROBD->SCTA+COMPROBD->SSCTA+COMPROBD->SSSCTA+COMPROBD->SSSSCTA","COMPDCTA" )
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,"COMPROBD->FECHEMIS","COMPDFEC" )
Endif
ENDIF
Next
nFinaliza:= (Seconds()-nInicia)/60
if lTodo
MisAreas()
WritePProString("config","UltReindex",Dtoc(date()),cIniFile)
SysRefresh()
MsgWait("Reindexación completada." + " Tiempo (Minutos): "+alltrim(str(nFinaliza)),,2)
endif
SysRefresh()
oDlg:End()
return(NIL)
//----------------------------------------------------------------
Function IntegIndex( oSay2,oMeter1,oMeter2,oSay3,Campos,cNombIndice )
local nVar, nStep, nTotal
oSay2:SetText( "Integrando Indice " + cNombIndice )
nTotal := LastRec()
nStep := Max( Int( nTotal * .02 ), 1 ) // actualizar el meter cada 2% del progreso es mas rapido que por cada registro
nVar := 0
oMeter1:nTotal = nTotal
oMeter1:Set( 0 )
nTotAvance+=1
nPorc:=Int(nTotAvance * nFactorAv) //Quitar esto si modificas la TMETEREX
INDEX ON &(Campos) TO &(cNombIndice);
EVAL {|| oMeter1:Set( nVar += nStep ) , SysRefresh(), .t. } EVERY nStep
oMeter1:Set( nTotal )
oMeter2:Set( nTotAvance )
oSay3:SetText( "Indices creados: "+Transform(nTotAvance,"99,999,999") )
Return nil
2a: Modificando la Class TMETEREX, al final, en el METHOD PAINT():
Code: Select all | Expand
IF ::bPainted != NIL .and. ValType( ::bPainted ) == "B"
Eval( ::bPainted, ::hDC )
ENDIF
::Say( ::nHeight/3, (::nWidth/2)-40, Str(Int(nPercent*100))+" %", , , , .t., .t., 0 ) //Agregar esto
::DispEnd( aInfo )
RETURN NIL
Yo prefiero la modificacion a TMETEREX porque asi, los porcentajes son automaticos.
Tambien se podría agregar una DATA por si se quiere utilizar o no, el porcentaje, o un nuevo method. Esperemos las obsevaciones de su creador.
Aun no he tratado con Meterex vertical.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- FranciscoA
- Posts: 2164
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Meterex con porcentaje.
Code: Select all | Expand
if ! ::lVertical
::Say( ::nHeight/3, (::nWidth/2)-40, Str(Int(nPercent*100))+" %", , , , .t., .t., 0 ) //FranciscoA
else
::Say( (::nHeight/2)-8, (::nWidth/2)-40, Str(Int(nPercent*100))+" %", , , , .t., .t., 0 ) //FranciscoA
endif
La barra vertical debe tener el suficiente ancho para que quepa el porcentaje.
Si alguno sabe como colocar el porcentaje de manera vertical... perfecto.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- karinha
- Posts: 7942
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 3 times
- Contact:
Re: Meterex con porcentaje.
Gracias Francisco, asi que posible, voy probar.
Regards, saludos.
Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
- FranciscoA
- Posts: 2164
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Meterex con porcentaje.
Yo estoy usando la classe con las modificaciones descritas, y me está funcionando.
Saludos.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql