Executar ação antes de fechar dialog
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Executar ação antes de fechar dialog
Como faço pra hwgui executar uma ação antes de uma dialog ser fechada?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Executar ação antes de fechar dialog
Ola!
Verifique os EVENTOS, ON INIT {||}, ON CLOSE {||} e o bloco oDlg:bActivate := {|| x,y,z,...}
Saudações,
Itamar M. Lins Jr.
Verifique os EVENTOS, ON INIT {||}, ON CLOSE {||} e o bloco oDlg:bActivate := {|| x,y,z,...}
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Executar ação antes de fechar dialog
Ola!
Errei não tem ON CLOSE é ON EXIT <bExit...
Teste e veja os resultados.
Saudações,
Itamar M. Lins Jr.
Código: Selecionar todos
#include "hwgui.ch"
Function Main
Local oDlg
INIT DIALOG oDlg TITLE "EVENTOS NO DIALOG" AT 0,0 SIZE 800,600 ;
On INIT {||hwg_msginfo("Bloco do Inicio")} ;
On EXIT {||oDlg:Hide(),hwg_msginfo("Bloco do EXIT")}
@ 300,300 SAY oSay CAPTION "Click no X para fechar" size 300,30
oDlg : bActivate:={||oDlg:Show(),hwg_msginfo("Bloco do Activate")}
ACTIVATE DIALOG oDlg CENTER
Return Nil
Teste e veja os resultados.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Executar ação antes de fechar dialog
Ajudou pra achar o EXIT.
Tô fazendo um teste muito doido kkkk
Como prender a janela sem prender a rotina.
Sem sucesso ainda.
Tô fazendo um teste muito doido kkkk
Como prender a janela sem prender a rotina.
Sem sucesso ainda.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
Executar ação antes de fechar dialog
QUINTAS eu fiz o seguinte, desativei o fechamento com o XJoséQuintas escreveu:Como faço pra hwgui executar uma ação antes de uma dialog ser fechada?
Código: Selecionar todos
INIT DIALOG oDlg TITLE "Nota de Pedido" ;
ICON MEMVAR->SGC_ICON ;
AT 0, 0 SIZE 1008,600 CLIPPER NOEXIT NOEXITESC NOCLOSABLECódigo: Selecionar todos
@ 340,104 OWNERBUTTON oOwnerbutton1 ID 1001 SIZE 75,40 ;
TEXT 'SAIR' ;
COORDINATES 0, 25, 0, 0 ;
FONT HFont():Add( '',0,-10,400,,,) ;
BITMAP 'EXIT16BMP' FROM RESOURCE TRANSPARENT;
COORDINATES 0, 7, 0, 0 ;
TOOLTIP 'Sai da Rotina / Finaliza Venda' ;
ON CLICK {|| oDlg:oPhantom:SETFOCUS(), IF( nw_vNF > 0.00 , NOTA_DE_PEDIDO_PAGAMENTO_GRAFICO(oDlg, oServer, oQuery3, @nNOMVEN, @nPEDIDOS_ID, @cPEDIDOS_ID, @nCLIENTES_ID, @ne_CNPJ, ;
@ce_xNome, @ne_CEP, @ce_xLgr, @ne_nro, @ce_xBairr, @ce_xMun, @ce_fone, @nPRODUTOS_ID, @ci_xProd, @ce_xCpl, @cNRAZ_SOC, @nNUMITEM, ;
@ni_qCom, @ni_vUnCom, @ni_vProd, @nw_vNF, @nTOTALNOTA, @nTOTALPESO ), oDlg:Close() ) } HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Executar ação antes de fechar dialog
Ola!
Como eu disse é ON EXIT pode deixar o X na janela que vai executar o bloco(On Exit) até por botão.
Pq ele pega a saida pela função hwg_EndDialog()
E façam exemplos que possamos testar, pq eu mesmo esqueço, e não sei muita coisa e gostaria de testar esses exemplos aqui.
Facilita para outros que não usam a Hwgui testar,
...
Saudações,
Itamar M. Lins Jr.
Como eu disse é ON EXIT pode deixar o X na janela que vai executar o bloco(On Exit) até por botão.
Pq ele pega a saida pela função hwg_EndDialog()
E façam exemplos que possamos testar, pq eu mesmo esqueço, e não sei muita coisa e gostaria de testar esses exemplos aqui.
Facilita para outros que não usam a Hwgui testar,
Código: Selecionar todos
METHOD Close() INLINE hwg_EndDialog( ::handle )Código: Selecionar todos
IF oDlg:bDestroy != Nil
res := Eval( oDlg:bDestroy, oDlg )
res := Iif( Valtype(res)=="L", res, .T. )
ENDIF
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Executar ação antes de fechar dialog
Olá!
Já que estão com a mão na massa, por favor, podem testar este caso?
Tem certeza? Tenho a impressão que oDlg:endDialog() simplesmente fecha a dialog. Já oDlg:close() executa tudo que existir, se existir algo, no bloco ON EXIT da dialog (oDlg:bOnExit ) e dó depois fecha a dialog.Itamar M. Lins Jr. escreveu:Pq ele pega a saida pela função hwg_EndDialog()
Já que estão com a mão na massa, por favor, podem testar este caso?
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Executar ação antes de fechar dialog
Tudo bem, não se preocupe, estou num teste muito doido.
Código: Selecionar todos
INIT DIALOG ::oFrm TITLE cTitulo AT 20, 0 SIZE 800, 600 ON EXIT { || ::lExit := .T. }
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Executar ação antes de fechar dialog
Ola!
Saudações,
Itamar M. Lins Jr.
O código do SVN e o teste está ai para vc ver.Tem certeza?
O exemplo e código do SVN estão ai. Podem testar ai no seus computadores. Aqui quando clico no X aparece a DIALOG com a msginfo.podem testar este caso?
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
Executar ação antes de fechar dialog
itamar no caso de fechar o que tiver abaixo do ACTIVATE DIALOG
tambem é executado depois do fechamento do DIALOG
EX:
ACTIVATE DIALOG oDlg CENTER
IF nw_vNF = 0.00 .AND. nPEDIDOS_ID != 0
oServer:Execute("DELETE FROM PEDIDOS WHERE PEDIDOS_Id='" + STRZERO(nPEDIDOS_ID,11,0) + "' LIMIT 1")
ENDIF
RETURN NIL
tambem é executado depois do fechamento do DIALOG
EX:
ACTIVATE DIALOG oDlg CENTER
IF nw_vNF = 0.00 .AND. nPEDIDOS_ID != 0
oServer:Execute("DELETE FROM PEDIDOS WHERE PEDIDOS_Id='" + STRZERO(nPEDIDOS_ID,11,0) + "' LIMIT 1")
ENDIF
RETURN NIL
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Executar ação antes de fechar dialog
Ola!
Olha ai o teste completo. Testem
Saudações,
Itamar M. Lins Jr.
Olha ai o teste completo. Testem
Código: Selecionar todos
#include "hwgui.ch"
Function Main
Local oDlg, oSay, oBtn
INIT DIALOG oDlg TITLE "EVENTOS NO DIALOG" AT 0,0 SIZE 800,600 ;
On INIT {||hwg_msginfo("Bloco do Inicio")} ;
On EXIT {||oDlg:Hide(),hwg_msginfo("Bloco do EXIT")}
@ 300,100 SAY oSay CAPTION "Click no X para fechar" size 300,30
@ 300,200 button oBtn Caption "SAIR Close" size 200,50 ON CLICK {||oDlg:Close()}
@ 300,400 button oBtn Caption "SAIR EndDialog" size 200,50 ON CLICK {||hwg_EndDialog()}
oDlg : bActivate:={||oDlg:Show(),hwg_msginfo("Bloco do Activate")}
ACTIVATE DIALOG oDlg CENTER
Return Nil
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Executar ação antes de fechar dialog
Ola!
Saudações,
Itamar M. Lins Jr.
Ai já está fora do READ(vamos dizer assim) do bloco(janela) com os componentes dentro.tambem é executado depois do fechamento do DIALOG
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Executar ação antes de fechar dialog
Ola!
Pode colocar esse CODE BLOCK, o bloco todo no ON EXIT da DIALOG que será executado.
Eu evito colocar código muito grande, depois de um determinado tamanho de código eu crio uma FUNCTION
As variáveis estão no objeto DIALOG. Então podemos acessar qualquer variável dessa pelo próprio objeto oDlg.
Teste ai:
oDlg:oCE_xNome...
Ou melhor hwg_msginfo( hb_valtoexp(oDlg) )
Saudações,
Itamar M. Lins Jr.
Código: Selecionar todos
ON CLICK {|| oDlg:oPhantom:SETFOCUS(), IF( nw_vNF > 0.00 , NOTA_DE_PEDIDO_PAGAMENTO_GRAFICO(oDlg, oServer, oQuery3, @nNOMVEN, @nPEDIDOS_ID, @cPEDIDOS_ID, @nCLIENTES_ID, @ne_CNPJ, ;
@ce_xNome, @ne_CEP, @ce_xLgr, @ne_nro, @ce_xBairr, @ce_xMun, @ce_fone, @nPRODUTOS_ID, @ci_xProd, @ce_xCpl, @cNRAZ_SOC, @nNUMITEM, ;
@ni_qCom, @ni_vUnCom, @ni_vProd, @nw_vNF, @nTOTALNOTA, @nTOTALPESO ), oDlg:Close() ) }
Eu evito colocar código muito grande, depois de um determinado tamanho de código eu crio uma FUNCTION
As variáveis estão no objeto DIALOG. Então podemos acessar qualquer variável dessa pelo próprio objeto oDlg.
Teste ai:
oDlg:oCE_xNome...
Ou melhor hwg_msginfo( hb_valtoexp(oDlg) )
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Executar ação antes de fechar dialog
Ola!
Pergunta do Fernando no Bate Papo.
Só desabilita qualquer objeto depois dele apresentado na DIALOG. Primeiro agente coloca o objeto na tela, depois desligamos ou ligamos.
Olhe no bloco o desligamento dele, bActivate. O mesmo problema do VALID no ultimo GET.(acredito)
Saudações,
Itamar M. Lins Jr.
Pergunta do Fernando no Bate Papo.
Código: Selecionar todos
#include "hwgui.ch"
Function Main
Local oDlg, oSay, oBtn, oOBtn
INIT DIALOG oDlg TITLE "EVENTOS NO DIALOG" AT 0,0 SIZE 800,600 ;
On INIT {||hwg_msginfo("Bloco do Inicio")} ;
On EXIT {||oDlg:Hide(),hwg_msginfo("Bloco do EXIT")}
@ 300,100 SAY oSay CAPTION "Click no X para fechar" size 300,30
@ 300,200 button oBtn Caption "SAIR Close" size 200,50 ON CLICK {||oDlg:Close()}
@ 300,300 button oBtn Caption "SAIR EndDialog" size 200,50 ON CLICK {||hwg_EndDialog()}
@ 300,400 OWNERBUTTON oOBtn SIZE 200,50 TEXT "SAIR"
oDlg : bActivate:={||oDlg:Show(), oOBtn:Disable(), hwg_msginfo("Bloco do Activate")}
ACTIVATE DIALOG oDlg CENTER
Return Nil
Olhe no bloco o desligamento dele, bActivate. O mesmo problema do VALID no ultimo GET.(acredito)
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.