Page 1 of 2

PROGRESSBAR - Funcion Generica

Posted: Sun Sep 02, 2018 8:41 pm
by SALINETAS24
Hola a todos, os paso un programa (ya lo hemos utilizado en otros ejemplos), donde he creado una función genérica para la PROGRESSBAR que se puede llamar desde cualquier programa nuestro.
Tenéis dos botones para activarla y ver como funciona, botón procesa y botón progresbar.

Solo tengo un pequeño problema para que sea totalmente genérica. A ver si alguien se le ocurre algo.
Para arrancar la función cargo una variable con el nombre que tiene el procedimiento donde realizo la busqueda/reindexación/recorrido/..., o lo que sea y que después desde la ventana de la PROGRESSBAR se ejecuta mediante el ON INIT..., es algo así.

Code: Select all

cFunc:="Nombre_pro()"

DEFINE WINDOW Progreso	AT 0,0	WIDTH 280 HEIGHT 200 TITLE TITULO	;	
		ICON 'TOOLS'  		;
		MODAL   			;	   
		ON INIT &cFunc		;  // --> AQUI ARRANCO EL PROCEDIMIENTO
		NOSYSMENU			;
		BACKCOLOR COLOR_SkyBlue 
Pues a cFunc le puedo mandar "Nombre_pro(1,.t.,"hola")" valores y se ejecuta sin problemas, pero no le puedo mandar una variable... "Nombre_pro(xvar,aOpc)..., casca.
Si necesito pasar el NOMBRE de la empresa que lo tengo en xEmp, lo normal seria cFunc="Nombre_pro(xEmp)" ..... pues no funciona, me dice que es una macro y que algo hago mal.

¿tenéis idea de como puedo mandar variables a la función indicada...?

Muchas gracias por anticipado y unas cervecitas fresquitas....

Re: PROGRESSBAR - Funcion Generica

Posted: Mon Sep 03, 2018 12:53 pm
by edk
Intenta convertir valores variables en expresiones, por ejemplo:

Code: Select all

*----------------------------------*
FUNCTION Procesa()
*----------------------------------*

	LOCAL n_1 := 100, c_1:='XXX', l_1:=.F., d_1:=DATE() - 100 
	Local cFunc:="Procesa1( " + HB_VALTOEXP(n_1) + " , " + HB_VALTOEXP(c_1) + " , " + HB_VALTOEXP(l_1) + " , " + HB_VALTOEXP(d_1) + ")"  //--> Procesa1 ( n_1, c_1, l_1, d_1 ) -> Procesa1 ( 100, 'XXX',  .F., DATE() - 100 )
	Progres("Albedrio",100,cFunc)
	
RETURN	

FUNCTION Procesa1( par_1, par_2, par_3, par_4)

	LOCAL nReg:=Fact->(LastRec())	
	LOCAL nDir:=0
	LOCAL nDiv:=0
	
	msgdebug(par_1, par_2, par_3, par_4)
	
	Fact->(DbGotop())	
	
    Form_1.LB_5.Value := ""
	GO TOP
	lSalPitando := .T.
                Hora_1 := TIME()     
                Form_1.LB_3.Value :=  "Inicio:  "+ SPACE(13)+ HORA_1  //TIME()
	DO WHILE !EOF() .AND. lSalPitando
				nDiv++
                Form_1.LB_1.Value := "Factura: " + STR(FACT->FACT) + "   No. Reg.: " + STR( RecNo(), 9 ) 
                Hora_2 := TIME() 
                Form_1.LB_4.Value := "Proceso: "+ SPACE(08)+ HORA_2   //TIME()
				Pone_Progres( "Factura: " + STR(FACT->FACT) + "   No. Reg.: " + STR( RecNo(), 9 ),nDiv,nReg)
		DBSKIP()
		DO EVENTS
	ENDDO

	Total_Timex()
	Form_1.Grid_1.RecNo := FACT->(RecNo() - 1 ) 
	PositionData()
	//---------------------------------------------------------
	// -> CUANDO TERMINA EL PROCESO DESACTIVAMOS EL PROGRESS_BAR
	ThisWindow.Release()
RETURN

Re: PROGRESSBAR - Funcion Generica

Posted: Mon Sep 03, 2018 4:42 pm
by SALINETAS24
Muchas gracias EdK, desconocia totalmente esa función.
Ahora si que tenemos una función generica.
Un saludo y una cervecita fresquita...

Re: PROGRESSBAR - Funcion Generica

Posted: Mon Sep 03, 2018 7:06 pm
by andyglezl
Hola
Yo lo utilizo de esta forma, tal vez les sirva.
---------------------------------------------------------
Hello
I use it in this way, maybe it will help.

The attachment ProgressB.png is no longer available

Code: Select all

/*_______________________________________________________________________________________________________*/
/*[•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•]*/
/*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
/*			GENERIC FUNCTION 	BY AndyGlezL		 			» Mon Sep 3, 2018 10:23 pm				 */
/*_______________________________________________________________________________________________________*/
/*[•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•]*/
/*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
#include "hmg.ch"

FUNCTION Main
	
	DEFINE WINDOW Form_1 AT 0 , 0 WIDTH 640 HEIGHT 320 MAIN NOSIZE NOMAXIMIZE BACKCOLOR { 216 , 191 , 216 }
		
		ON KEY ESCAPE OF Form_1 ACTION Form_1.Release
		
		@ 010, 010 BUTTON BT_1 OF Form_1 CAPTION "Proc. 1"  WIDTH 100 HEIGHT 20 ACTION MiWinSiNo( "REORGANIZA:", WHITE, CRLF + ;
																									"Este Procedimiento Reorganiza"  + CRLF + ;
																									"todos los archivos y se tomará" + CRLF + ;
																									"su tiempo."                     + CRLF + ;
																									" "                              + CRLF + ;
																									"Desea Continuar ?"              + CRLF , ;
																									{ || REORGANIZA( ) }  )
																			
		@ 030, 010 BUTTON BT_2 OF Form_1 CAPTION "Proc. 2"  WIDTH 100 HEIGHT 20 ACTION MiWinSiNo( "REPORTE:", WHITE,   CRLF + ;
																									"Se Generar  el Reporte en un"  + CRLF + ;
																									"  archivo con formato Word. "  + CRLF + ;
																									" "                             + CRLF + ;
																									" "                             + CRLF + ;
																									"Desea Continuar ?"             + CRLF , ;
																									{ || COTIZA_WORD( ) }  )
																									
		@ 060, 010 BUTTON BT_3 OF Form_1 CAPTION "Proc. 3"  WIDTH 100 HEIGHT 20 ACTION MiWinSiNo( "RESPALDA:", WHITE,  CRLF + ;
																									"Este Proceso Respaldará TODAS" + CRLF + ;
																									"sus Bases de Datos."           + CRLF + ;
																									" "                             + CRLF + ;
																									" "                             + CRLF + ;
																									"Desea Continuar ?"             + CRLF , ;
																									{ || RESPALDA( ) }  )	

	END WINDOW
    CENTER WINDOW Form_1
    ACTIVATE WINDOW Form_1
	
RETURN
FUNCTION REORGANIZA( )
	// PROCESO DE REORGANIZAR
	FOR i1 = 1 TO 10000000
		DO EVENTS
	NEXT
RETURN
FUNCTION COTIZA_WORD( )
	// PROCESO GENERA WORD
	FOR i1 = 1 TO 10000000
		DO EVENTS
	NEXT
RETURN
FUNCTION RESPALDA( )
	// PROCESO DE RESPALDAR
	FOR i1 = 1 TO 10000000
		DO EVENTS
	NEXT
RETURN
/*[•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•]*/
/*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/	
/*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯   FUNCION GENERICA        ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/	
/*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/	
FUNCTION MiWinSiNo( cTit, cClr1, cTex, bBlock  )

        DEFINE WINDOW sino AT 0,0 WIDTH 400 HEIGHT 150 MODAL NOSIZE NOCAPTION NOSYSMENU BACKCOLOR cClr1

            DEFINE IMAGE Image_1
                   ROW 0 ; COL 0 ; WIDTH 400 ; HEIGHT 150
                   PICTURE 'boton3.jpg'
                   STRETCH .T.
            END IMAGE

            ON KEY ESCAPE OF sino ACTION ( sino.Release )

			@ 130,010 PROGRESSBAR  PBAR_1 OF sino WIDTH 380 HEIGHT 10 SMOOTH 
			sino.PBAR_1.Hide
			
            @ 015,015 LABEL LB_Tit  VALUE cTit CENTERALIGN WIDTH 280 HEIGHT 105 FONT 'Verdana' SIZE 9 FONTCOLOR cClr1 BOLD TRANSPARENT 
            @ 035,010 LABEL LB_SiNo VALUE cTex CENTERALIGN WIDTH 280 HEIGHT 105 FONT 'Verdana' SIZE 9 FONTCOLOR cClr1 BOLD TRANSPARENT

            @ 040,300 BUTTON BTN_Si CAPTION "&SI" ACTION WinSiNoAct( bBlock ) WIDTH 80 HEIGHT 25 FONT "Verdana" SIZE 9
            @ 090,300 BUTTON BTN_No CAPTION "&NO" ACTION sino.Release	      WIDTH 80 HEIGHT 25 FONT "Verdana" SIZE 9
			
        END WINDOW
        CENTER WINDOW sino
        ACTIVATE WINDOW sino

RETURN nil
FUNCTION WinSiNoAct( bBlock )
	sino.PBAR_1.Show
	SET PROGRESSBAR PBAR_1 OF sino ENABLE MARQUEE UPDATED 30
    sino.BTN_Si.Hide
	sino.BTN_No.Hide
    sino.LB_SiNo.FontSize 	:= 14
    sino.LB_SiNo.FontColor 	:= YELLOW
	sino.LB_SiNo.Value 		:= "E s p e r e," + CRLF + " P r o c e s a n d o . . ."
    EVAL( bBlock )
    sino.BTN_No.Show
	sino.BTN_No.Caption 	:= "Ok"
    sino.LB_SiNo.FontSize 	:= 14
	sino.LB_SiNo.Value 		:= "P r o c e s o" + CRLF + "T e r m i n a d o !"
    BT_ClientAreaInvalidateAll( "SiNo", .F.)
    PlayAsterisk()
	SET PROGRESSBAR PBAR_1 OF sino DISABLE MARQUEE
	sino.PBAR_1.Hide
RETURN( Nil )
/*[•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•]*/
/*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/

Re: PROGRESSBAR - Funcion Generica

Posted: Tue Sep 04, 2018 9:53 am
by serge_girard
Andres,

Nice work! Can you please also provide boton3.jpg?

Serge

Re: PROGRESSBAR - Funcion Generica

Posted: Tue Sep 04, 2018 12:44 pm
by andyglezl
serge_girard wrote:
Tue Sep 04, 2018 9:53 am
Andres,

Nice work! Can you please also provide boton3.jpg?

Serge
Claro Serge, trate de enviarlo anteriormente pero parece que la pàgina sigue dando problemas.
--------------------------------------------------------------------------------------------------------------------
Sure Serge, try to send it before but it seems that the page keeps giving problems.

Re: PROGRESSBAR - Funcion Generica

Posted: Wed Sep 12, 2018 9:39 pm
by SALINETAS24
Una curiosidad rara.
En el programa "LASKEY.rar" cuando lo ejecutamos, si pulsamos el botón "PROGRESS BAR" se muestra un mensaje, si seguidamente pulsamos el botón cancelar se devuelve el control al GRID a través de SETFOCUS....., pero el botón "PROGRESS BAR" se queda como "marcado"....¿??¿?¿

¿se puede eliminar ese efecto visual..?

Gracias a todos

Re: PROGRESSBAR - Funcion Generica

Posted: Wed Mar 06, 2019 8:04 pm
by andyglezl
Hola
Aquí una nueva version de la función Generica ahora utilizando un archivo GIF.
Y creo que con esto, ya podemos manejar los GIF en donde queramos.
(Habrá que seguir mejorandolo, se aceptan sugerencias)
*------------------------------------------------------------------------------------------------
Hello
Here a new version of the Generic function now using a GIF file.
And I think with this, we can handle the GIF wherever we want.
(We will have to continue improving it, suggestions are accepted)

demogif.gif
demogif.gif (376.65 KiB) Viewed 672 times
GenFuncGif.rar
(27.42 KiB) Downloaded 67 times

Re: PROGRESSBAR - Funcion Generica

Posted: Wed Mar 06, 2019 8:49 pm
by martingz
Gran trabajo Andy felicidades



saludos

Re: PROGRESSBAR - Funcion Generica

Posted: Thu Mar 07, 2019 11:25 am
by mustafa
Hola Andrés
Muy logrado me gusta mucho
Saludos
Mustafa