Página 1 de 2

como clicar sem clicar ????

Enviado: 15 Dez 2017 20:05
por Fernando queiroz
na rotina abaixo quero abrir um dialogo mas não tenho nenhum GET somente vou mostrar a criacao dos arquivos na progressbar

tentei de algumas formas mas nao funcionava ai criei um botao que resolveu a parada mas tenho de clicar nele queria um click automatico quando
entrar na rotina

Código: Selecionar todos

#include "hwgui.ch"
************************************************************
FUNCTION abrearquivos(  )
************************************************************ 

  LOCAL oDlg,  oLabel1, oLabel2, oLabel3, oLabel4, oProgressbar1, oProgressbar2, oLabel5


  INIT DIALOG oDlg TITLE "Verificando Arquivos Aguarde..."    AT 0, 0 SIZE 656,208   ;
     STYLE WS_POPUP+WS_CAPTION+WS_SYSMENU+WS_SIZEBOX+DS_CENTER 
    ThisNFE := oDlg
	
   @ 580,177 OWNERBUTTON oOwnerbutton1  SIZE 68,28 ;
        TEXT 'Sair'  ;
        COORDINATES 0, 0, 0, 0  ;
        ON CLICK {|| GERAARQUIVOS(), oDlg:Close() }
   @ 14,18 SAY oLabel1 CAPTION "Arquivo:"  SIZE 55,18  
   @ 76,18 SAY oLabel2 CAPTION "nome do arquivo"  SIZE 566,18  
   @ 73,67 SAY oLabel4 CAPTION "nome do Indice"  SIZE 566,18  
   @ 15,66 SAY oLabel3 CAPTION "Indice:"  SIZE 45,18  
   @ 11,122 SAY oLabel5 CAPTION "Total:"  SIZE 45,18  
   @ 12,89 PROGRESSBAR oProgressbar1 SIZE 635,18  BARWIDTH 20 QUANTITY 100 
   @ 12,143 PROGRESSBAR oProgressbar2 SIZE 635,18  BARWIDTH 26 QUANTITY 100    

	
   ACTIVATE DIALOG oDlg  

	

RETURN oDlg:lresult

como clicar sem clicar ????

Enviado: 15 Dez 2017 20:54
por JoséQuintas
Se fosse Visual Basic...

oDlg:Show()
oDlg:RotinaX

Se fosse GTWVG com Multithread, nem precisaria button.

Tem algum evento on activate() ou on load() ou sei lá o que, que indique quando o trem inicia?
Cuidado pra não confundir o evento de iniciar com o evento da janela ficar ativa.
Janela fica ativa a cada click na janela.

como clicar sem clicar ????

Enviado: 15 Dez 2017 22:36
por Fernando queiroz
ja tentei com on activate, on init, on tudo que foi jeito, a unica forma foi parando no button
nao tenho ideia de como resolver :% :% :% :% :%

como clicar sem clicar ????

Enviado: 15 Dez 2017 23:13
por MSDN
Pela lógica, eu faria assim :
1- o componente progressbar fica na janela
2- a ativação do progressbar fica em outra function
3- dispara no evento ON INIT da janela
4- depois de terminado, o controle volta pra function, que decide o que fazer, fecha a janela ou mostra uma mensagem antes

como clicar sem clicar ????

Enviado: 16 Dez 2017 00:06
por Fernando queiroz
MSDN escreveu:Pela lógica, eu faria assim :
1- o componente progressbar fica na janela
2- a ativação do progressbar fica em outra function
3- dispara no evento ON INIT da janela
4- depois de terminado, o controle volta pra function, que decide o que fazer, fecha a janela ou mostra uma mensagem antes
usando ON INIT do DIALOG nao faz nada fica parado

fiz assim tambem


GERAARQUIVOS()
// ACTIVATE DIALOG oDlg

oDlg:CLOSE()

RETURN oDlg:lresult
******************************************
STATIC FUNCTION GERAARQUIVOS()
******************************************
ACTIVATE DIALOG ThisNFE
ThisNFE:oProgressbar2:SHOW()


ativa a janela mas nao faz nada ate dar um esc

como clicar sem clicar ????

Enviado: 16 Dez 2017 00:52
por Claudio Soto
Fernando queiroz escreveu:
MSDN escreveu:Pela lógica, eu faria assim :
1- o componente progressbar fica na janela
2- a ativação do progressbar fica em outra function
3- dispara no evento ON INIT da janela
4- depois de terminado, o controle volta pra function, que decide o que fazer, fecha a janela ou mostra uma mensagem antes
usando ON INIT do DIALOG nao faz nada fica parado

fiz assim tambem


GERAARQUIVOS()
// ACTIVATE DIALOG oDlg

oDlg:CLOSE()

RETURN oDlg:lresult
******************************************
STATIC FUNCTION GERAARQUIVOS()
******************************************
ACTIVATE DIALOG ThisNFE
ThisNFE:oProgressbar2:SHOW()


ativa a janela mas nao faz nada ate dar um esc
Nunca usé hwg pero sería algo así: usar el ON INIT del DIALOG y dentro de la rutina GERAARQUIVOS() colocar un DoEvents() o como se llame en hwg. En la rutina GERAARQUIVOS() ir actualizando el ProgressBar e ir llamando DoEvents()

como clicar sem clicar ????

Enviado: 16 Dez 2017 01:21
por Fernando queiroz
Claudio Soto escreveu:
Fernando queiroz escreveu:
MSDN escreveu:Pela lógica, eu faria assim :
1- o componente progressbar fica na janela
2- a ativação do progressbar fica em outra function
3- dispara no evento ON INIT da janela
4- depois de terminado, o controle volta pra function, que decide o que fazer, fecha a janela ou mostra uma mensagem antes
usando ON INIT do DIALOG nao faz nada fica parado

fiz assim tambem


GERAARQUIVOS()
// ACTIVATE DIALOG oDlg

oDlg:CLOSE()

RETURN oDlg:lresult
******************************************
STATIC FUNCTION GERAARQUIVOS()
******************************************
ACTIVATE DIALOG ThisNFE
ThisNFE:oProgressbar2:SHOW()


ativa a janela mas nao faz nada ate dar um esc
Nunca usé hwg pero sería algo así: usar el ON INIT del DIALOG y dentro de la rutina GERAARQUIVOS() colocar un DoEvents() o como se llame en hwg. En la rutina GERAARQUIVOS() ir actualizando el ProgressBar e ir llamando DoEvents()
NAO FUNCIONA , nem aparece a tela

como clicar sem clicar ????

Enviado: 16 Dez 2017 01:40
por Fernando queiroz
NO ON INIT do DIALOG tudo acontece antes da tela aparecer

No ON ACTIVATE tambem tudo acontece antes da tela aparecer

entao teria que ser algo que acontece depois da tela aparecer , mas ai ela fica esperando um evento para continuar

agora esse tal evento que nao sei onde colocar para a coisa acontecer :% :% :% :% :%

como clicar sem clicar ????

Enviado: 16 Dez 2017 09:55
por Fernando queiroz
Pesquisando no FORUM vi que em outra LIB tem o seguinte

ACTIVATE DIALOG oDlg NOWAIT CENTERED

isso resolveria mas na HWGUI nao tem

:? :? :?

como clicar sem clicar ????

Enviado: 16 Dez 2017 10:34
por Claudio Soto
Intentar usar antes del gerarchivos () oDiag:show () o algo parecido que obligue a mostrar la ventana y dentro de la rutina que actualiza el ProgressBar usar DoEvents.

como clicar sem clicar ????

Enviado: 16 Dez 2017 11:46
por sygecom
Já que tem um botão, pode dar um HIDE nele e executar a FUNCTION dele.
Exemplo:

Código: Selecionar todos

INIT DIALOG oDlg TITLE "Verificando Arquivos Aguarde..."    AT 0, 0 SIZE 656,208   ;
ON INIT {|| oOwnerbutton1:HIDE(), oOwnerbutton1:ONCLICK() };
	     STYLE WS_POPUP+WS_CAPTION+WS_SYSMENU+WS_SIZEBOX+DS_CENTER
   ThisNFE := oDlg

	   @ 580,177 OWNERBUTTON oOwnerbutton1  SIZE 68,28 ;

....
....

como clicar sem clicar ????

Enviado: 16 Dez 2017 12:50
por Fernando queiroz
Error HCUSTOMWINDOW/0 Invalid class member
Called from source\winapi\hcwindow.prg->HOWNBUTTON:ONCLICK(230
sygecom escreveu:Já que tem um botão, pode dar um HIDE nele e executar a FUNCTION dele.
Exemplo:

Código: Selecionar todos

INIT DIALOG oDlg TITLE "Verificando Arquivos Aguarde..."    AT 0, 0 SIZE 656,208   ;
ON INIT {|| oOwnerbutton1:HIDE(), oOwnerbutton1:ONCLICK() };
	     STYLE WS_POPUP+WS_CAPTION+WS_SYSMENU+WS_SIZEBOX+DS_CENTER
   ThisNFE := oDlg

	   @ 580,177 OWNERBUTTON oOwnerbutton1  SIZE 68,28 ;

....
....
METHOD AddControl( oCtrl ) INLINE AAdd( ::aControls, oCtrl )
METHOD DelControl( oCtrl )
METHOD AddEvent( nEvent, nId, bAction, lNotify ) ;
INLINE AAdd( iif( lNotify == NIL .OR. !lNotify, ;
::aEvents, ::aNotify ), ;
{ nEvent, nId, bAction } )
METHOD FindControl( nId, nHandle )
METHOD Hide() INLINE ( ::lHide := .T. , hwg_Hidewindow( ::handle ) )
METHOD Show() INLINE ( ::lHide := .F. , hwg_Showwindow( ::handle ) )
METHOD Move( x1, y1, width, height )
METHOD SetColor( tcolor, bColor, lRepaint )
METHOD onEvent( msg, wParam, lParam )
METHOD End()
ERROR HANDLER OnError()

como clicar sem clicar ????

Enviado: 17 Dez 2017 14:15
por sygecom
Tente mudar de OWNERBUTTON pra BUTTONEX

como clicar sem clicar ????

Enviado: 17 Dez 2017 20:42
por asimoes
Quero entender isso, essa janela de dialogo é modal ou não modal ?

Se não for modal você quer executar GERAARQUIVOS() ?, se for isso, abra a janela com oDlg:Activate( .T. ) não modal e execute no on init da janela a sua função
GERAARQUIVOS(), com isso não vai precisar de botão

como clicar sem clicar ????

Enviado: 17 Dez 2017 20:50
por asimoes
Já tentou assim:

Código: Selecionar todos

#include "hwgui.ch"
************************************************************
FUNCTION abrearquivos(  )
************************************************************ 
LOCAL oDlg,  oLabel1, oLabel2, oLabel3, oLabel4, oProgressbar1, oProgressbar2, oLabel5

   INIT DIALOG oDlg TITLE "Verificando Arquivos Aguarde..." ;
               AT 0, 0 ;
               SIZE 656,208   ;
               STYLE WS_POPUP + WS_CAPTION + WS_SYSMENU + WS_SIZEBOX + DS_CENTER ;
               ON INIT {|| GERAARQUIVOS(), oDlg:Close() }
     
    ThisNFE := oDlg
   
   @ 14,18 SAY oLabel1 CAPTION "Arquivo:"  SIZE 55,18  
   @ 76,18 SAY oLabel2 CAPTION "nome do arquivo"  SIZE 566,18  
   @ 73,67 SAY oLabel4 CAPTION "nome do Indice"  SIZE 566,18  
   @ 15,66 SAY oLabel3 CAPTION "Indice:"  SIZE 45,18  
   @ 11,122 SAY oLabel5 CAPTION "Total:"  SIZE 45,18  
   @ 12,89 PROGRESSBAR oProgressbar1 SIZE 635,18  BARWIDTH 20 QUANTITY 100 
   @ 12,143 PROGRESSBAR oProgressbar2 SIZE 635,18  BARWIDTH 26 QUANTITY 100    
   
   oDlg:Activate()  

RETURN oDlg:lresult