Página 1 de 1

Usar WAIT WINDOW com Minigui Extends

Enviado: 25 Abr 2017 12:41
por rubens
Ola...

Alguém sabe como usar o WAIT WINDOW na Minigui Extends?
Vi no exemplo em C:\MiniGUI\SAMPLES\BASIC\WAIT_WINDOW\demo.prg que é muito simples... mas quando tento usar dá erro de sintaxe no Wait Window.
Daí vi no exemplo que ele inclui o HMG.CH na compilação.... tentei incluir também no meu PRG, compila só que o programa fica executando em segundo plano... não aparece na tela... e para finalizalo tenho que pressionar ctrl+alt+del
p.s. compilo pela IDE

Obrigado
Rubens

Usar WAIT WINDOW com Minigui Extends

Enviado: 25 Abr 2017 22:47
por bjbernal
Eu usei um exemplo, também da pasta SAMPLES (não me lembro o nome) e adaptei para mim !

*****************************************************************************************
Segue o utilitário (winespera.prg) abaixo:
***************************************************************************************************

Código: Selecionar todos

#include "minigui.ch"

//////////////////////////////////////////////////////////////////////////////
FUNCTION WaitWinCreate( cTitle, lCenter, nWRow, nWCol)
   LOCAL cFormName := "WaitWin_" + HB_NtoS( _GetId() ) 
   LOCAL nTime := SECONDS()
   LOCAL aPict := {"FR01","FR02","FR03","FR04","FR05","FR06","FR07","FR08",;
                   "FR09","FR10","FR11","FR12"}
   DEFAULT cTitle := "Aguarde...", lCenter := .T., nWRow := 0, nWCol := 0

   nStaticLogo := 1  // assign a number to display picture

   SET INTERACTIVECLOSE OFF

   DEFINE WINDOW &cFormName ;
     ROW 0 COL 0          ;
     WIDTH 420 HEIGHT 230 ;
     TITLE ''             ;
     MINWIDTH 420 MINHEIGHT 230 ;
     MAXWIDTH 420 MAXHEIGHT 230 ;
     CHILD NOCAPTION      ;
     TOPMOST              ; 
     BACKCOLOR WHITE      ;
     FONT 'Tahoma' SIZE 12

     @ 10, 10 LABEL Label_1   ;
       WIDTH 400 HEIGHT 20 ;
       VALUE "Tempo transcorrido " + TIME() ;
       CENTERALIGN VCENTERALIGN TRANSPARENT

     @ 40, (420-128)/2 IMAGE Image_1 PICTURE aPict[nStaticLogo] ;
       WIDTH 128 HEIGHT 128 ;
       TRANSPARENT

     @ 178, 10 LABEL Label_2   ;
       WIDTH 400 HEIGHT 20 ;
       VALUE cTitle        ;
       CENTERALIGN VCENTERALIGN TRANSPARENT

   END WINDOW

   IF lCenter == .F.
      SetProperty( cFormName, "Row", nWRow )
      SetProperty( cFormName, "Col", nWCol )
   ELSE
      Center Window &cFormName
   ENDIF

   Activate Window &cFormName NoWait

RETURN { cFormName, aPict, nTime } // return the number of windows to then kill him by the window

//////////////////////////////////////////////////////////////////////
FUNCTION WaitWinTimer( aDim, cExtra )
   LOCAL cFormName := aDim[1], aPict := aDim[2], cTime, nTime := aDim[3]

      cTime := cExtra + "      Tempo Transcorrido " + SECTOTIME( SECONDS() - nTime )
      SetProperty( cFormName, "Label_1", "Value", cTime )

      nStaticLogo ++  // the number of display picture
      nStaticLogo := IIF( nStaticLogo > LEN(aPict), 1, nStaticLogo )
      SetProperty( cFormName, "Image_1", "Picture", aPict[nStaticLogo] )

RETURN NIL

FUNCTION WaitWinCreate2( cTitle, lCenter, nWRow, nWCol)
   LOCAL cFormName := "WaitWin_" + HB_NtoS( _GetId() ) 
   LOCAL nTime := SECONDS()
   LOCAL aPict := {"FR01","FR02","FR03","FR04","FR05","FR06","FR07","FR08",;
                   "FR09","FR10","FR11","FR12"}
   DEFAULT cTitle := "Aguarde...", lCenter := .T., nWRow := 0, nWCol := 0
   
   #define CLR2_LIGHTBLUE  { 165, 175, 245 }   

   
   SET INTERACTIVECLOSE OFF

   DEFINE WINDOW &cFormName ;
     ROW 0 COL 0          ;
     WIDTH 400 HEIGHT 64 ;
     TITLE ''             ;
     MINWIDTH 400 MINHEIGHT 64 ;
     MAXWIDTH 400 MAXHEIGHT 64 ;
     CHILD NOCAPTION      ;
     TOPMOST              ; 
     BACKCOLOR CLR2_LIGHTBLUE ;
     FONT 'Tahoma' SIZE 12
/*
     @ 10, 10 LABEL Label_1   ;
       WIDTH 400 HEIGHT 20 ;
       VALUE cTitle ;
       CENTERALIGN VCENTERALIGN TRANSPARENT
*/
      @ 16, 10 LABEL Label_1 VALUE cTitle WIDTH 380 HEIGHT 24 FONT 'Arial' SIZE 14 ;
         FONTCOLOR BLUE BOLD BACKCOLOR CLR2_LIGHTBLUE CENTERALIGN



   END WINDOW

   IF lCenter == .F.
      SetProperty( cFormName, "Row", nWRow )
      SetProperty( cFormName, "Col", nWCol )
   ELSE
      Center Window &cFormName
   ENDIF

   Activate Window &cFormName NoWait

RETURN cFormName




//////////////////////////////////////////////////////////////////////
FUNCTION WaitWinClose( cFormName )

   SET INTERACTIVECLOSE ON

   Domethod( cFormName, "Release" )

   DO MESSAGE LOOP

RETURN NIL
*************************************************************************************************
Exemplo de como usar o utilitario acima:
***************************************************************************************************

Código: Selecionar todos

Function exemplo()
  Local sformwait := ""
  
  sformwait := WaitWinCreate2( 'Aguarde...' ) // cria o form de espera, tem dois modos a escolher (WaitWinCreate e WinWaitCreate2)
  		executa_tarefa()
  WaitWinClose( sformwait )  // encerra o form de espera
Return nil

Usar WAIT WINDOW com Minigui Extends

Enviado: 25 Abr 2017 22:54
por Toledo
Rubens, tente usar direto a função WaitWindow(), ai não precisa chamar HMG.CH.

Por exemplo:

Código: Selecionar todos

WaitWindow( "Sua mensagem...", .F. )
Veja comando correspondente que está no CH:
#xcommand WAIT WINDOW <message> => WaitWindow( <message>, .F. )

#xcommand WAIT WINDOW <message> NOWAIT => WaitWindow( <message>, .T. )

#xcommand WAIT CLEAR => WaitWindow()
Abraços,

Usar WAIT WINDOW com Minigui Extends

Enviado: 25 Abr 2017 22:55
por bjbernal
Desculpa se o meu post acima ficou mau estilizado. Parece que o editor do fórum bugou ! Espero que tenha conseguido tirar proveito !

Usar WAIT WINDOW com Minigui Extends

Enviado: 26 Abr 2017 00:53
por rubens
Boa noite...

Bjbernal a sua função tá demais para o que eu tô querendo de qualquer forma abre possibilidades... obrigado...

Toledo... era isso mesmo que tava procurando... bem simples e prático funcionou direitinho... obrigado

Rubens

Usar WAIT WINDOW com Minigui Extends

Enviado: 26 Abr 2017 12:10
por JoséQuintas
Só comentário:

Vocês nunca estranharam esse comando?
O Harbour tem o comando WAIT, não faz confundir?

Quando digo que as LIBs "des-ensinam" Harbour nem tinha visto essas coisas, parece pior do que eu pensava....

Num outro post tem o DO EVENTS também, que não é o comando DO...

Usar WAIT WINDOW com Minigui Extends

Enviado: 02 Mai 2017 21:55
por Nascimento
gostei vou testar porque tentei algumas vezes deu erro , então deixei sem usar

Usar WAIT WINDOW com Minigui Extends

Enviado: 03 Mai 2017 01:21
por JoséQuintas
Avisar só por precaução:

Se não tiver o #include da minigui, vai acabar executando o comando padrão do Harbour/xHarbour que não tem nada a ver.
Não sei se por isso pode não ter funcionado da outra vez.