Page 1 of 2

TGif

PostPosted: Thu Nov 09, 2017 11:14 am
by oliveiros junior
Prezados,

Fiz um rotina para mostrar o "meter" enquanto o sistema executa ações. O meter é um gif que está nos samples do FWH. Coloquei a ação no codblock que a classe TGif fornece. A rotina mostra o Gif porém de forma estática. Pergunto se existe alguma forma de manter o gif animado enquanto se executa as ações?

Ex.: bAcao = { || oOBjeto := oTeste:ReQuery() }

na rotina

DEFINE DIALOG oDialog NOWAIT CENTERED ;
ON INIT TGif( oDialog, "meter.gif",0,0,,,,, bAcao)

Att.,

Oliveiros Junior

Re: TGif

PostPosted: Thu Nov 09, 2017 12:00 pm
by cnavarro
Prueba esto a ver si te ayuda

Code: Select all  Expand view

#include "fivewin.ch"
#include "gif.ch"

Static oWnd

Function main()

   local oMenu
   
   MENU oMenu
      MENUITEM "Prueba" ACTION Prueba()
   ENDMENU
   
   DEFINE WINDOW oWnd MENU oMenu
   ACTIVATE WINDOW oWnd
   
Return nil

//----------------------------------------------------------------------------//

Function Prueba()

   local oDlg
   local oGif
   local oSay
   
   DEFINE DIALOG oDlg TITLE "Prueba" SIZE 160, 160 OF oWnd PIXEL
      @ 100, 10 SAY oSay PROMPT "TEXTO" OF oDlg PIXEL
   ACTIVATE DIALOG oDlg ON INIT CrearGif( oDlg ) NOWAIT

Return nil

//----------------------------------------------------------------------------//

Function CrearGif( oDlg )
   
   local oGif
   @ 1, 1 GIF oGif FILE "..\gifs\matrix.gif" OF oDlg ADJUST //SIZE 100, 100

Return nil

//----------------------------------------------------------------------------//


 

Re: TGif

PostPosted: Thu Nov 09, 2017 12:39 pm
by oliveiros junior
Olá Cristobal,

Obrigado pela resposta.

Sim vai funcionar, porém se eu colocar

WITH OBJECT oDialog
:bStart := { || Eval( oGif:bLClicked, SysRefresh() ) } // Para execução do codblock que coloquei na criação do objeto Gif
END

Ou

WITH OBJECT oDialog
:bStart := { || Eval( bAcao, SysRefresh() ) } // Para execução do codblock que sem colocar na criação do objeto Gif
END

Mostra o gif mas de forma estática.

Att.,

Oliveiros Junior

Re: TGif

PostPosted: Thu Nov 09, 2017 1:09 pm
by karinha
Tente assim:

Code: Select all  Expand view

#include "fivewin.ch"
#include "gif.ch"

Static oWnd

Function main()

   local oMenu
   
   MENU oMenu
      MENUITEM "Prueba" ACTION Prueba()
   ENDMENU
   
   DEFINE WINDOW oWnd MENU oMenu
   ACTIVATE WINDOW oWnd
   
Return nil

//----------------------------------------------------------------------------//

Function Prueba()

   local oDlg
   local oGif
   local oSay
   
   DEFINE DIALOG oDlg TITLE "Prueba" SIZE 160, 160 OF oWnd PIXEL

      @ 100, 10 SAY oSay PROMPT "TEXTO" OF oDlg PIXEL

   ACTIVATE DIALOG oDlg ON INIT CrearGif( oDlg ) NOWAIT

Return nil

//----------------------------------------------------------------------------//

Function CrearGif( oDlg )
   
   local oGif

   @ 10, 1 GIF oGif FILE "..\gifs\006.gif" OF oDlg SIZE 100, 100 ;
       ACTION( oGif:lAdjust := .F., oGif:Refresh(), oDlg:Refresh() )

Return nil

//----------------------------------------------------------------------------//
 

Re: TGif

PostPosted: Thu Nov 09, 2017 1:19 pm
by cnavarro
oliveiros junior wrote:Olá Cristobal,

Obrigado pela resposta.

Sim vai funcionar, porém se eu colocar

WITH OBJECT oDialog
:bStart := { || Eval( oGif:bLClicked, SysRefresh() ) } // Para execução do codblock que coloquei na criação do objeto Gif
END

Ou

WITH OBJECT oDialog
:bStart := { || Eval( bAcao, SysRefresh() ) } // Para execução do codblock que sem colocar na criação do objeto Gif
END

Mostra o gif mas de forma estática.

Att.,

Oliveiros Junior


Disculpa, entonces no he entendido lo que necesitas
Google Translate no me traduce sus palabras, Joao?

Re: TGif

PostPosted: Thu Nov 09, 2017 1:36 pm
by karinha
Oliveiros Junior, use este tradutor:

http://tradukka.com/translate/en?hl=pt

Para se expressar em Espanhol ou Inglês.

E mostre imagens do que você deseja realmente fazer e com código fonte de exemplo completo, evite postar somente uma parte do código fonte.

Poste imagens aqui, cole e copie a tag:

https://imgur.com/

Ou aqui:

https://uploaddeimagens.com.br

Oliveiros, você iniciou um tópico aqui no forum Fivewin Brasil, e não deu continuidade, porquê?

http://fivewin.com.br/index.php?/topic/27293-tgif/

Obg. abs.

Saudações.

Re: TGif

PostPosted: Thu Nov 09, 2017 1:41 pm
by oliveiros junior
Olá Cristobal,

Obrigado pela resposta. Acho que eu não me expressei direito. Vou colocar abaixo minha rotina para explicar melhor.

Chamada:

Executar_Acao( { || oObejto := oAcao:ReQuery() } )

Função: Utilizando o codblock do classe TGif

Function Executar_Acao( bAcao )
Local oDialog, oGif

DEFINE DIALOG oDialog NAME "Executar_Acao" TRANSPARENT COLOR CLR_BLACK, CLR_WHITE

WITH OBJECT oDialog
:bStart := { || Eval( oGif:bLClicked, SysRefreh() ), oDialog:End() }
END

ACTIVATE DIALOG oDialog NOWAIT CENTERED ;
ON INIT oGif := TGif( oDialog, "meter.gif", 0,0,,,,, bAcao )
Return

Função: Sem utilizar o codblock da classe executando diretamente o codbloc passado como parâmetro

Local oDialog, oGif

DEFINE DIALOG oDialog NAME "Executar_Acao" TRANSPARENT COLOR CLR_BLACK, CLR_WHITE

WITH OBJECT oDialog
:bStart := { || Eval( bAcao, SysRefreh() ), oDialog:End() }
END

ACTIVATE DIALOG oDialog NOWAIT CENTERED ;
ON INIT oGif := TGif( oDialog, "meter.gif", 0,0 )

Nos dois casos o gif aparece, porém estático.

Olá Karinha,

Obrigado pela resposta.
Att,

Oliveiros Junior

Re: TGif

PostPosted: Thu Nov 09, 2017 1:50 pm
by oliveiros junior
Hola Cristobal,

Gracias por la respuesta. Creo que no me expresé derecho. Voy a poner mi rutina para explicar mejor.

Llamada:

Executar_Acao( { || oObejto := oAcao:ReQuery() } )

Función: Utilizando el codblock de la clase TGif

Function Executar_Acao( bAcao )
Local oDialog, oGif

DEFINE DIALOG oDialog NAME "Executar_Acao" TRANSPARENT COLOR CLR_BLACK, CLR_WHITE

WITH OBJECT oDialog
:bStart := { || Eval( oGif:bLClicked, SysRefreh() ), oDialog:End() }
END

ACTIVATE DIALOG oDialog NOWAIT CENTERED ;
ON INIT oGif := TGif( oDialog, "meter.gif", 0,0,,,,, bAcao )
Return

Función: Sin utilizar el codblock de la clase ejecutando directamente el codbloc pasado como parámetro

Function Executar_Acao( bAcao )

Local oDialog, oGif

DEFINE DIALOG oDialog NAME "Executar_Acao" TRANSPARENT COLOR CLR_BLACK, CLR_WHITE

WITH OBJECT oDialog
:bStart := { || Eval( bAcao, SysRefreh() ), oDialog:End() }
END

ACTIVATE DIALOG oDialog NOWAIT CENTERED ;
ON INIT oGif := TGif( oDialog, "meter.gif", 0,0 )

En los dos casos el gif aparece, pero estático durante la ejecución del codblock

Gracias

Oliveiros Junior

Re: TGif

PostPosted: Thu Nov 09, 2017 1:55 pm
by cnavarro
Ok,
First test with

Code: Select all  Expand view

:bStart := { || Eval( bAcao, SysRefreh() ), oDialog:End() }

// prueba con

:bStart := { || Eval( bAcao ), SysRefreh(), oDialog:End() }
 

Re: TGif

PostPosted: Thu Nov 09, 2017 2:35 pm
by oliveiros junior
Hola cristobal,

Así tampoco funciona. El Gif se queda estático.

Att.,

Oliveiros Junior

Re: TGif

PostPosted: Thu Nov 09, 2017 3:07 pm
by Ariel
Hola,
me pasa lo mismo, el gif no corre... y si la app.
Saludos.

Re: TGif

PostPosted: Thu Nov 09, 2017 3:15 pm
by karinha
Ariel wrote:Hola,
me pasa lo mismo, el gif no corre... y si la app.
Saludos.



Ariel, muestra un ejemplo autocontenido porfa.


Gracias, saludos.

Re: TGif

PostPosted: Thu Nov 09, 2017 6:09 pm
by karinha

Re: TGif

PostPosted: Mon Nov 27, 2017 2:45 am
by cnavarro
Bueno, como no he llegado a entender lo que necesitabas, pongo un ejemplo que desarrollé hace algún tiempo a ver si te sirve de algo
Yo activo las tareas en segundo plano con un botón de la buttonbar, pero igual puedes hacerlo con un evento del gif ( que creo que puede ser lo que intentabas hacer )
Espero que por lo menos lo encuentres interesante

Recuerda cambiar en tu script de compilación la libreria HBVM.LIB por HBVMMT.LIB de harbour y la librería CW32.LIB por CW32MT.LIB en Borland
Y ya de paso cuando lo pruebes, vuelve a pulsar el boton TEST sin esperar a que termine
Dime si lo has encontrado util

Code: Select all  Expand view

//----------------------------------------------------------------------------//
// Programa: TESTMT01.PRG
// Autor...: Cristobal Navarro
//----------------------------------------------------------------------------//

#include "Fivewin.ch"
#include "hbthread.ch"
#include "gif.ch"

Static oPnel1

Function Main()

   local oWnd
   local oBar
   local oBtt1
   local oBtt2
   local uTh1
   local uTh2
   local uTh3

    DEFINE DIALOG oWnd FROM 0, 0 TO 660, 1100 TITLE "Test" PIXEL //MDI

      DEFINE BUTTONBAR oBar SIZE 48, 48 OF oWnd
      DEFINE BUTTON oBtt1 PROMPT "Salir" OF oBar ACTION oWnd:End() TOOLTIP "Salir"
      DEFINE BUTTON oBtt2 PROMPT "Test"  OF oBar ;
         ACTION ( uTh1 := hb_threadStart( HB_THREAD_INHERIT_PUBLIC, @WTest(), "Hello", 120 ),;
                  uTh2 := hb_threadStart( HB_THREAD_INHERIT_PUBLIC, @WTest(), 333, 120 ),;
                  MsgWait( "Process", "Modal", 10  ))
   
   ACTIVATE DIALOG oWnd ;
      ON INIT ( HazPnel( oWnd ), CrearGif( oWnd ) ) ;
      VALID ( hb_threadTerminateAll(), .T. )
Return NIL

//----------------------------------------------------------------------------//

Function WTest( u, nF )

   local x := 1
   if Valtype( u ) = "N"
      For x = 1 to 300 step 15
         @ nF + x, 60 SAY "Thread 2" OF oPnel1 PIXEL COLOR CLR_BLACK
         SysRefresh()
         hb_idleSleep( 0.8 )
      Next x
   else
      For x = 1 to 300 step 15
         @ nF + x, 4 SAY "Thread 1" OF oPnel1 PIXEL COLOR CLR_RED
         SysRefresh()
         hb_idleSleep( 0.8 )
      Next x
   endif

Return nil

//----------------------------------------------------------------------------//

Function HazPnel( oWnd )

   @ 50, 400 PANEL oPnel1 OF oWnd SIZE 200, 550
   oPnel1:SetColor( CLR_BLACK, CLR_YELLOW )
   
Return oPnel1

//----------------------------------------------------------------------------//

Function CrearGif( oDlg )
   
   local oGif
   @ 60, 10 GIF oGif FILE "..\gifs\matrix.gif" OF oDlg SIZE 100, 100 //ADJUST //

Return nil

//----------------------------------------------------------------------------//
 

Re: TGif

PostPosted: Mon Nov 27, 2017 1:32 pm
by oliveiros junior
Hola Cristobal,

Gracias por la respuesta. Voy a probar y volveré aquí.

Por su parte,

Oliveiros Junior