TGif

oliveiros junior
Posts: 84
Joined: Tue Mar 20, 2007 3:13 pm

TGif

Post 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
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: TGif

Post by cnavarro »

Prueba esto a ver si te ayuda

Code: Select all

#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

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


 
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
oliveiros junior
Posts: 84
Joined: Tue Mar 20, 2007 3:13 pm

Re: TGif

Post 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
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: TGif

Post by karinha »

Tente assim:

Code: Select all

#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

//----------------------------------------------------------------------------//
 
João Santos - São Paulo - Brasil
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: TGif

Post 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?
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: TGif

Post 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.
João Santos - São Paulo - Brasil
oliveiros junior
Posts: 84
Joined: Tue Mar 20, 2007 3:13 pm

Re: TGif

Post 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
oliveiros junior
Posts: 84
Joined: Tue Mar 20, 2007 3:13 pm

Re: TGif

Post 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 _ el gif aparece, pero estático durante la ejecución del codblock

Gracias

Oliveiros Junior
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: TGif

Post by cnavarro »

Ok,
First test with

Code: Select all

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

// prueba con

:bStart := { || Eval( bAcao ), SysRefreh(), oDialog:End() }
 
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
oliveiros junior
Posts: 84
Joined: Tue Mar 20, 2007 3:13 pm

Re: TGif

Post by oliveiros junior »

Hola cristobal,

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

Att.,

Oliveiros Junior
Ariel
Posts: 309
Joined: Wed Nov 29, 2006 1:51 pm
Location: Rosario - Argentina

Re: TGif

Post by Ariel »

Hola,
me pasa lo mismo, el gif no corre... y si la app.
Saludos.
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: TGif

Post 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.
João Santos - São Paulo - Brasil
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: TGif

Post by karinha »

João Santos - São Paulo - Brasil
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: TGif

Post 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

//----------------------------------------------------------------------------//
// 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

//----------------------------------------------------------------------------//
 
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
oliveiros junior
Posts: 84
Joined: Tue Mar 20, 2007 3:13 pm

Re: TGif

Post by oliveiros junior »

Hola Cristobal,

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

Por su parte,

Oliveiros Junior
Post Reply