oliveiros Posted October 24, 2017 Report Share Posted October 24, 2017 Olá Pessoal, Estou precisando usar a classe TGif, porém tenho o seguinte problema: Ao abrir um dialog com o gif e executar bStart o gif para. Abaixo o código: Function Executar_Acao( bAcao ) .. WITH OBJECT oDialog :bStart := { | | lRetorno := Eval( bAcao, oDialog ) } END .. ACTIVATE DIALOG oDialog CENTERED NOWAIT CENTERED ; ON INIT TGif( oDialog, cLocal + "meter.gif", 10,10 ) Alguém sabe o que pode estar acontecendo? Att., Oliveiros Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 24, 2017 Report Share Posted October 24, 2017 // Animated GIFs support for FWH #include "FiveWin.ch" function Main() local oWnd DEFINE WINDOW oWnd TITLE "Animated GIFs" TGif():New( oWnd, "..\gifs\halo.gif", 10, 10 ) ACTIVATE WINDOW oWnd ; ON INIT BuildDialog() return nil function BuildDialog() local oDlg DEFINE DIALOG oDlg SIZE 400, 300 TITLE "Non modal dialog" /* ACTIVATE DIALOG oDlg CENTERED NOWAIT ; ON INIT TGif():New( oDlg, "..\gifs\halo.gif", 10, 10 ) */ ACTIVATE DIALOG oDlg CENTERED ; ON INIT TGif():New( oDlg, "..\gifs\halo.gif", 10, 10 ) return nil Quote Link to comment Share on other sites More sharing options...
oliveiros Posted October 24, 2017 Author Report Share Posted October 24, 2017 Olá Kapiaba, Obrigado pela resposta. Dessa forma funciona pois você não está executando nenhum ação na Dialog. Quando você coloca a execução de um meter por exemplo, o gif para. Att., Oliveiros Silva Mendes Junior Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 24, 2017 Report Share Posted October 24, 2017 Esse Meter, seria aonde, na Indexação? Tipo assim: Abs. Quote Link to comment Share on other sites More sharing options...
oliveiros Posted November 20, 2017 Author Report Share Posted November 20, 2017 Olá Kapiaba, Não é indexação. Gostaria de usar o gif para qualquer ação que o usuário tenha que aguardar. O que já verifiquei foi o seguinte: A ação necessita poder dar um refresh, se puder funciona bem: No exemplo que dei acima, se a cada inserção que realizar no banco de dados der um refresh() ele vai funcionar. Porém se eu der um ReQuery() ele não vai funcionar pois a função ReQuery() não tem um refresh() intermediário. Att., Oliveiros Junior Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 21, 2017 Report Share Posted November 21, 2017 Se quiser, eu posto a classe ANIMABMP.PRG do antigo dbwide.com.ar que uso até hoje. Quote Link to comment Share on other sites More sharing options...
oliveiros Posted November 21, 2017 Author Report Share Posted November 21, 2017 Olá, Obrigado pela resposta. Seria interessante ver o funcionamento dela. se puder postar agradeço. Att., Oliveiros Junior Quote Link to comment Share on other sites More sharing options...
Valdir Posted November 21, 2017 Report Share Posted November 21, 2017 Amigos... Me perdoem, pois vou dar meu Pitaco. Já fazem alguns anos que decidi retirar do meu Sistema esse tipo de Função/Rotinas por não acrescentar nada além de estética e perfumaria. Tive sérios problemas em alguns clientes, principalmente onde o equipamento era mais antigo. O maior problema estava relacionado com o Consumo de Recursos e por consequência Lentidão no Sistema. Agora cada um tem a sua sistemática de trabalho e não faço críticas, apenas expresso a minha opinião visando colaborar com os amigos. Abraços. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 21, 2017 Report Share Posted November 21, 2017 Penso a mesma coisa que o Valdir, não vejo nenhuma necessidade de GIF em uma aplicação comercial. Não acrescenta nada. Só minha opinião. Não estou criticando ninguém. Se for na janela principal, para dar um efeito especial, blz, mas em diálogos, acho desnecessário, além de irritante. Abs. Quote Link to comment Share on other sites More sharing options...
oliveiros Posted November 21, 2017 Author Report Share Posted November 21, 2017 Olá, Desculpe discordar: 1) O gif é um recurso que consome pouca memória se funcionar corretamente; 2) é importante avisar ao cliente que o sistema está processando alguma demanda, pois ele pode achar que o sistema travou e não aguardar o processamento de uma ação importante. Você por exemplo: aguardando retorno de NF da Secretária de Fazenda, "querys" com alguns "joiners", principalmente com banco de dados remoto. Att., Oliveiros Junior Quote Link to comment Share on other sites More sharing options...
aferra Posted November 21, 2017 Report Share Posted November 21, 2017 então use o barprogress mais facil de usar Quote Link to comment Share on other sites More sharing options...
oliveiros Posted November 21, 2017 Author Report Share Posted November 21, 2017 Olá, De qualquer forma obrigado pelas respostas. Att., Oliveiros Junior kapiaba 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 21, 2017 Report Share Posted November 21, 2017 Oliveiros, o Alessandro está correto. Se o seu programa parar, o GIF não parará, pois ele ficará "animado" do mesmo jeito. Quote Link to comment Share on other sites More sharing options...
oliveiros Posted November 21, 2017 Author Report Share Posted November 21, 2017 Olá aferra, Em meus aplicativos atuais já uso um meter. Peguei o gif disponível no fivewin o circular e acrescentei o percentual no centro para substituir o meter, funciona bem para ações em que de tempo em tempo consigo dar um refresh, o problema são ações complexas que não consigo dar um refresh intermediário. Pensei inicialmente que o tgif funcionaria independente de qualquer processo, e só pararia quando desse um comando end(). Mais uma vez obrigado pela resposta. Att., Oliveiros Junior Quote Link to comment Share on other sites More sharing options...
Marca Posted November 21, 2017 Report Share Posted November 21, 2017 Também somente como pitaco. Também acho que muito recurso visual acaba não sendo legal em uma ferramenta comercial mais acho que temos que ter disponível a opção de usar ou não a ferramenta. Tenho problemas com a apresentação de gifs a anos e tive q. fazer um recurso técnico == gatilho para em alguns clientes fazer com que não apresente este recurso e isso é complicado. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 21, 2017 Report Share Posted November 21, 2017 Gosto da idéia do Alessandro, pois mostra em tempo real o que está acontecendo, o uçuário não fica na dúvida se tá ou não tá funcionado. A barra de progresso mostrará o GIF não. Abs Quote Link to comment Share on other sites More sharing options...
oliveiros Posted November 21, 2017 Author Report Share Posted November 21, 2017 Olá, Obrigado a todos pela ajuda. Vou tentar mais um pouco e qualquer solução aviso aqui. Att., Oliveiros Junior alex2002 1 Quote Link to comment Share on other sites More sharing options...
Ariston Santos Posted November 21, 2017 Report Share Posted November 21, 2017 Teste esta função. Use do mesmo modo que usa a MsgRun(...) function MyMsgRun( cCaption, cTitle, bAction ) LOCAL oRunDlg, nWidth, uReturn, oRunBr, nLenCp DEFINE BRUSH oRunBr COLOR GetSysColor(5) DECLARE oGif DEFAULT cCaption := "Please, wait...",; bAction := { || WaitSeconds( 1 ) } IF ! EMPTY(cCaption) IF cTitle == NIL nLenCp := (Len( cCaption )*0.8)+13 ELSE nLenCp := (Max( Len( cCaption ), Len( cTitle ) )*0.8)+13 ENDIF ELSE nLenCp := 13 ENDIF IF cTitle == NIL DEFINE DIALOG oRunDlg ; FROM 0,0 TO 7.0, nLenCp ; STYLE nOr( DS_MODALFRAME, WS_POPUP ) ; TRANSPARENT BRUSH oRunBr ELSE DEFINE DIALOG oRunDlg ; FROM 0,0 TO 8.4, nLenCp ; TITLE cTitle ; STYLE DS_MODALFRAME ; TRANSPARENT BRUSH oRunBr ENDIF oGif := NIL oRunDlg:bStart := {|| (oGif := TGif():New( oRunDlg, ".\bitmaps\loading.gif", 2, 2 ),; SysRefresh(), uReturn := Eval( bAction, oRunDlg ), oRunDlg:End())} nWidth := oRunDlg:nRight - oRunDlg:nLeft oSay := NIL IF ! EMPTY(cCaption) @20, 55 SAY oSay PROMPT cCaption SIZE nWidth - 13, 16 PIXEL OF oRunDlg ENDIF ACTIVATE DIALOG oRunDlg CENTER ON PAINT IIF(oSay<>NIL,oSay:Refresh(),) // ; // VALID (!GetKeyState( VK_ESCAPE ) .AND. !GetKeyState( VK_MENU )) // Não usar isso. Dá erro ao fechar a tela de cadastro de produtos com Alt F4. return uReturn Quote Link to comment Share on other sites More sharing options...
alex2002 Posted April 9, 2020 Report Share Posted April 9, 2020 Olá Oliveiros. Gostaria de saber se vc resolveu, também tenho o mesmo problema seu e de fato o GIF para no processamento. Um abraço, Alexandre Pereira Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.