PROGRESSBAR - Funcion Generica

HMG en Español

Moderator: Rathinagiri

User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

PROGRESSBAR - Funcion Generica

Post 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....
Attachments
LASKEY.rar
(1.65 MiB) Downloaded 253 times
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
edk
Posts: 909
Joined: Thu Oct 16, 2014 11:35 am
Location: Poland

Re: PROGRESSBAR - Funcion Generica

Post 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
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

Re: PROGRESSBAR - Funcion Generica

Post by SALINETAS24 »

Muchas gracias EdK, desconocia totalmente esa función.
Ahora si que tenemos una función generica.
Un saludo y una cervecita fresquita...
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
User avatar
andyglezl
Posts: 1461
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Contact:

Re: PROGRESSBAR - Funcion Generica

Post 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 )
/*[•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•]*/
/*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
Attachments
ProgressB.png
ProgressB.png (84.35 KiB) Viewed 4622 times
Andrés González López
Desde Guadalajara, Jalisco. México.
User avatar
serge_girard
Posts: 3161
Joined: Sun Nov 25, 2012 2:44 pm
DBs Used: 1 MySQL - MariaDB
2 DBF
Location: Belgium
Contact:

Re: PROGRESSBAR - Funcion Generica

Post by serge_girard »

Andres,

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

Serge
There's nothing you can do that can't be done...
User avatar
andyglezl
Posts: 1461
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Contact:

Re: PROGRESSBAR - Funcion Generica

Post 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.
Attachments
GenericFnct.zip
(24.72 KiB) Downloaded 270 times
Andrés González López
Desde Guadalajara, Jalisco. México.
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

Re: PROGRESSBAR - Funcion Generica

Post 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
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
User avatar
andyglezl
Posts: 1461
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Contact:

Re: PROGRESSBAR - Funcion Generica

Post 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 4135 times
GenFuncGif.rar
(27.42 KiB) Downloaded 259 times
Andrés González López
Desde Guadalajara, Jalisco. México.
martingz
Posts: 394
Joined: Wed Nov 18, 2009 11:14 pm
Location: Mexico

Re: PROGRESSBAR - Funcion Generica

Post by martingz »

Gran trabajo Andy felicidades



saludos
User avatar
mustafa
Posts: 1158
Joined: Fri Mar 20, 2009 11:38 am
DBs Used: DBF
Location: Alicante - Spain
Contact:

Re: PROGRESSBAR - Funcion Generica

Post by mustafa »

Hola Andrés
Muy logrado me gusta mucho
Saludos
Mustafa
Post Reply