Executar ação antes de fechar dialog
Enviado: 21 Set 2020 17:08
Como faço pra hwgui executar uma ação antes de uma dialog ser fechada?
Em homenagem a Paulo Cesar Toledo
https://pctoledo.org/
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
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() ) } 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
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()
Código: Selecionar todos
INIT DIALOG ::oFrm TITLE cTitulo AT 20, 0 SIZE 800, 600 ON EXIT { || ::lExit := .T. }
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?
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
Ai já está fora do READ(vamos dizer assim) do bloco(janela) com os componentes dentro.tambem é executado depois do fechamento do DIALOG
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() ) }
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