PROGRESSBAR - Funcion Generica

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
SALINETAS24
Posts: 200
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Has thanked: 2 times
Been thanked: 5 times

PROGRESSBAR - Funcion Generica

Post by SALINETAS24 » Sun Sep 02, 2018 8:41 pm

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 28 times

edk
Posts: 361
Joined: Thu Oct 16, 2014 11:35 am
Location: Poland
Has thanked: 102 times
Been thanked: 262 times

Post by edk » Mon Sep 03, 2018 12:53 pm

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: 200
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Has thanked: 2 times
Been thanked: 5 times

Post by SALINETAS24 » Mon Sep 03, 2018 4:42 pm

Muchas gracias EdK, desconocia totalmente esa función.
Ahora si que tenemos una función generica.
Un saludo y una cervecita fresquita...

User avatar
andyglezl
Posts: 1030
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Has thanked: 21 times
Been thanked: 42 times
Contact:

Post by andyglezl » Mon Sep 03, 2018 7:06 pm

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 294 times
Andrés González López
Desde Guadalajara, Jalisco. México.

User avatar
serge_girard
Posts: 2140
Joined: Sun Nov 25, 2012 2:44 pm
DBs Used: 1 MySQL - MariaDB
2 DBF
Location: Belgium
Has thanked: 449 times
Been thanked: 102 times
Contact:

Post by serge_girard » Tue Sep 04, 2018 9:53 am

Andres,

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

Serge

User avatar
andyglezl
Posts: 1030
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Has thanked: 21 times
Been thanked: 42 times
Contact:

Post by andyglezl » Tue Sep 04, 2018 12:44 pm

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 32 times
Andrés González López
Desde Guadalajara, Jalisco. México.

User avatar
SALINETAS24
Posts: 200
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Has thanked: 2 times
Been thanked: 5 times

Post by SALINETAS24 » Wed Sep 12, 2018 9:39 pm

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

Post Reply