Page 1 of 2
TGif
Posted: 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
Posted: Thu Nov 09, 2017 12:00 pm
by cnavarro
Prueba esto a ver si te ayuda
Code: Select all | Expand
#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
Posted: 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
Posted: Thu Nov 09, 2017 1:09 pm
by karinha
Tente assim:
Code: Select all | Expand
#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
Posted: 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
Posted: Thu Nov 09, 2017 1:36 pm
by karinha
Oliveiros Junior, use este tradutor:
http://tradukka.com/translate/en?hl=ptPara 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.brOliveiros, 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
Posted: 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
Posted: 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
Posted: Thu Nov 09, 2017 1:55 pm
by cnavarro
Ok,
First test with
Code: Select all | Expand
:bStart := { || Eval( bAcao, SysRefreh() ), oDialog:End() }
// prueba con
:bStart := { || Eval( bAcao ), SysRefreh(), oDialog:End() }
Re: TGif
Posted: 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
Posted: 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
Posted: 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
Posted: Thu Nov 09, 2017 6:09 pm
by karinha
Re: TGif
Posted: 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
//----------------------------------------------------------------------------//
// 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
Posted: 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