Ao clicar no botão selecionar o method é chamado duas vezes

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

Avatar do usuário
Daiane
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 28 Out 2014 16:19
Localização: Feira de Santana - BA

Ao clicar no botão selecionar o method é chamado duas vezes

Mensagem por Daiane »

Não sei o que ta acontecendo, não fiz recursividade se é isso que alguns estão pensando.
No meu código, ao clicar no botão selecionar o method é chamado.

Só q ta acontecendo dele ser chamado duas vezes e não sei pq isso ta acontecendo,ja aconteceu com alguém aq?
alguém poderia me ajudar a resolver isso?

Vou mostrar a chamada do method e o method para vc analisarem:

Código: Selecionar todos

REDEFINE BUTTON bSelecionar ID 4005 OF ::oDlg ACTION {::MudarEmp2()}

METHOD MudarEmp2() CLASS XBMudarEmpresa
	LOCAL i:=::xBrw2:nVScrollPos, subDir
	
	  IF !file("C:\MFOLHA\MFOLHA.DIR")
	 	  IF !FILE(::bancos:getRaiz()+"MFOLHA.DIR")
	 	     MsgAlert("Falha ao selecionar diretório da empresa selecionada! Tente novamente", "Erro ao selecionar diretório" ) 
			  return .f.
			endif
	  endif
	
		/******************************************/

	nReg := RECNO()
	IF !(39->(USED()))
		::bancos:abrir(39)
		SELE 39
		GO nReg
	ENDIF

	IF !EMPTY(39->DIRETORIO)
		subDir := alltrim(39->DIRETORIO) + "\"
	ELSE
		MsgAlert("Não foi possível abrir um dos diretório, verifique o tamanho dos mesmos", "Alerta")
	ENDIF
	::empresa := 39->EMPRESA
	::cnpj := 39->CGC
	
	IF TRAVAREG(10)
		REPL 39->SN WITH "S"
	ELSE
		MsgAlert("Não foi possível alterar o arquivo 'MFOLHA.DIR'")
 	ENDIF
	
	::bancos:closeAllDBF()
	
	::bancos:SetSubDir(subDir)
	
	REST FROM &(::bancos:arqParam) ADDI
	KWEMPDIR    :=subDir
	KWEMPNOM := ::empresa
	KWEMPCGC := ::cnpj
	save all like kw* to &(::bancos:arqParam)
	::lSelecionou := .T.
		
	::oDlg:End() 
	
RETURN .T.
Editado pela última vez por Toledo em 27 Jul 2015 10:05, em um total de 1 vez.
Razão: O presente tópico foi movido da seção Harbour, uma vez que seu conteúdo não tem relação com os objetivos daquela seção, onde só podem constar dúvidas técnicas de programação diretamente relacionadas com o [x]Harbour.
XHb 1.2.1 + FW 12.05 + Pelles C IDE
"Eu adoraria mudar o mundo, mas não me deram o código-fonte."
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Ao clicar no botão selecionar o method é chamado duas vezes

Mensagem por Kapiaba »

Vc. não postou o código completo, mas provável, tenha um VALID em um GET, então, tens que usar o CANCEL ou lCancel := .T. para não ativar o VALID duas vezes. eu acho...

Código: Selecionar todos

REDEFINE BUTTON bSelecionar ID 4005 OF ::oDlg ACTION {::MudarEmp2()} CANCEL
Avatar do usuário
Daiane
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 28 Out 2014 16:19
Localização: Feira de Santana - BA

Ao clicar no botão selecionar o method é chamado duas vezes

Mensagem por Daiane »

Não tem valid
da uma olhada

- chamada do method na linha (57)

Código: Selecionar todos

METHOD  buildDlg(oWnd) CLASS XBMudarEmpresa
	local xClass := self, oIcon 
	::xVer2enter:=0
	
	
	//"strhlp.dll"
	DEFINE ICON oIcon RESOURCE "#8026"

   DEFINE DIALOG ::oDlg RESOURCE "#1236" ICON oIcon
   
	::getParams()

	::lSelecionou:=.F.	
	::UseDB()
	
	SELE 39
	ordsetfocus(3)
	DBGOTOP()


	lsubdir := alltrim(::bancos:getSubDir())
	lsubdir := IF(substr(lsubdir,len(lsubdir)) == "\", substr(lsubdir,1,len(lsubdir)-1), lsubdir)
	
	39->(dbseek(UPPER(lsubdir)))
	
	::empresa   := 39->EMPRESA
	::cnpj      := 39->CGC
	::diretorio := ::bancos:getRaiz()+::bancos:getSubDir()
   
   39->(ordsetfocus(1))
   
	REDEFINE SAY ID 4001 OF ::oDlg
	REDEFINE SAY ID 4007 OF ::oDlg
	
	REDEFINE SAY ::gempresa   VAR ::empresa   ID 4002 OF ::oDlg
	REDEFINE SAY ::gdiretorio VAR ::diretorio ID 4008 OF ::oDlg
	
	REDEFINE XBROWSE ::xBrw2 ID 4003 OF ::oDlg CELL LINES;
		FIELDS 39->DIRETORIO, IF(39->SN == "S", .T., .F.), 39->EMPRESA, 39->CGC;
		HEADERS "Pasta", "S/N", "Empresa", "C.N.P.J.";
		ON DBLCLICK ::c4change()		                                  
	   * Manipulando o Browse
			::xBrw2:aCols[1]:bLClickHeader := {|| 39->(DBSETORDER(3)), ::xBrw2:GoTop(), ::xBrw2:Refresh()}
			::xBrw2:aCols[1]:cSortOrder = 39->(OrdSetFocus(3))
			::xBrw2:aCols[3]:bLClickHeader := {|| 39->(DBSETORDER(1)), ::xBrw2:GoTop(), ::xBrw2:Refresh()} 
			::xBrw2:aCols[3]:cSortOrder = 39->(OrdSetFocus(1))  
			::xBrw2:bSeek            := {|c| 39->(DbSeek( Upper( c ) )) }   
		* Fim 
	::xBrw2:lHScroll := .F.
	
	AEval( ::xBrw2:aCols, { |o| ::SetPostEdit(o) } )                                
	AEval( ::xBrw2:aCols, { |o| ::SetPostEdit2(o) } )
 
	REDEFINE BUTTON bmarcar ID 4009 OF ::oDlg ACTION {::marcarTodos(.T.)}
   REDEFINE BUTTON bdesmarcar ID 4010 OF ::oDlg ACTION {::marcarTodos(.F.)}
   
	REDEFINE BUTTON bSelecionar ID 4005 OF ::oDlg ACTION {::MudarEmp2()}
	REDEFINE BUTTON bBuscar ID 4004  OF ::oDlg ACTION ::InitSrch()
	REDEFINE BUTTON bCancelar ID 4006  OF ::oDlg ACTION xClass:oDlg:End()
   
RETURN
XHb 1.2.1 + FW 12.05 + Pelles C IDE
"Eu adoraria mudar o mundo, mas não me deram o código-fonte."
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Ao clicar no botão selecionar o method é chamado duas vezes

Mensagem por Itamar M. Lins Jr. »

Ola!
Parece que está usando a Hwgui como interface gráfica. É isso mesmo ?

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Daiane
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 28 Out 2014 16:19
Localização: Feira de Santana - BA

Ao clicar no botão selecionar o method é chamado duas vezes

Mensagem por Daiane »

não sei te responder Itamar M. Lins Jr.
so estou corrigindo os erros desse sistema,não fui eu que desenvolvi
XHb 1.2.1 + FW 12.05 + Pelles C IDE
"Eu adoraria mudar o mundo, mas não me deram o código-fonte."
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Ao clicar no botão selecionar o method é chamado duas vezes

Mensagem por Kapiaba »

No botões de Saida das telas em FIVEWIN Daiane, sempre ponha CANCEL.

Código: Selecionar todos

58	   REDEFINE BUTTON bCancelar ID 4006  OF ::oDlg ACTION xClass:oDlg:End() CANCEL
Em tempo: todo modulo que comece com #Include "Fivewin.Ch", significa que você esta usando ou incorporando FiveWin com outra LIB qualquer ou somente usando FiveWin.

No meu skype tem uma pessoa que usa uma tal de gtwvw(?) com FiveWin, disse ela que dá uns bugs terriveis.

abs.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Ao clicar no botão selecionar o method é chamado duas vezes

Mensagem por Toledo »

Itamar M. Lins Jr. escreveu:Parece que está usando a Hwgui como interface gráfica.
Provavelmente deve ser FiveWin... e confirmando isto, o tópico será movido para a seção FiveWin.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Daiane
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 28 Out 2014 16:19
Localização: Feira de Santana - BA

Ao clicar no botão selecionar o method é chamado duas vezes

Mensagem por Daiane »

alguém poderia me ajudar,ainda está acontecendo da mesma forma so que em rotina diferente
não sei se é o action, o action tem algum parametro?
é como se o method estivesse sendo chamado duas vezes,mas ja verifiquei aqui no fonte e so é chamado uma vez
ele não tem nenhum valid.
Alguem poderia me ajudar?

Código: Selecionar todos

//Chamanda do method
REDEFINE BUTTON ::bAlterar PROMPT "&Baixa" ID 4002  OF ::oChild ACTION (::oCadastro:IncOuAlt(.F.))

METHOD IncOuAlt(inc) CLASS CadMultBaixa
Private nRec:=Recno()
	DEFINE ICON oIcon RESOURCE if(inc,"#8004","#8033")
	DEFINE DIALOG ::oDlg RESOURCE "#1034" OF ::oChild ICON oIcon;
   TITLE if(inc, "Incluir", "Alterar") + " Pagamento"
   
   ::bancos := SGBD():getInstance()	   		
	::inicializarDados(inc)   
	
	REDEFINE SAY ID 4005 OF ::oDlg
	REDEFINE SAY ID 4002 OF ::oDlg
	REDEFINE SAY ID 4012 OF ::oDlg
	REDEFINE SAY ID 4017 OF ::oDlg
	REDEFINE SAY ID 4014 OF ::oDlg

   REDEFINE GET ::gDtPagamento 	VAR ::cDtPagamento 	ID 4006 OF ::oDlg  
   REDEFINE GET ::gNumCheque 		VAR ::cNumCheque 		ID 4013 OF ::oDlg
   REDEFINE GET ::gCgCpf 			VAR ::cCgCpf 			ID 4018 OF ::oDlg
   REDEFINE GET ::gEmitente 		VAR ::cEmitente 		ID 4015 OF ::oDlg 
   REDEFINE GET ::gDesconto 		VAR ::cDesconto 		ID 4001 OF ::oDlg 
   
		
   REDEFINE BUTTON ::bSalvar ID 4026 OF ::oDlg ACTION ::SalvarDados(inc);
	    WHEN (!EMPTY(::cDtPagamento))
	REDEFINE BUTTON ::bCancelar ID IDCANCEL OF ::oDlg;
		ACTION ::oDlg:End() CANCEL 
	
	ACTIVATE DIALOG ::oDlg CENTERED	
   DbGoto(nRec)
	::xbrowBusca:Refresh()
	::xbrowBusca:gotop()

RETURN nil
XHb 1.2.1 + FW 12.05 + Pelles C IDE
"Eu adoraria mudar o mundo, mas não me deram o código-fonte."
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Ao clicar no botão selecionar o method é chamado duas vezes

Mensagem por Kapiaba »

Daiane,

Código: Selecionar todos

 REDEFINE BUTTON ::bAlterar PROMPT "&Baixa" ID 4002  OF ::oChild ACTION (::oCadastro:IncOuAlt(.F.)) CANCEL
Ou no Botão de Saida deste metodo que faz a chamada: CANCEL UPDATE

Abs.
Avatar do usuário
Daiane
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 28 Out 2014 16:19
Localização: Feira de Santana - BA

Ao clicar no botão selecionar o method é chamado duas vezes

Mensagem por Daiane »

Obrigada Kapiaba
XHb 1.2.1 + FW 12.05 + Pelles C IDE
"Eu adoraria mudar o mundo, mas não me deram o código-fonte."
Avatar do usuário
Daiane
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 28 Out 2014 16:19
Localização: Feira de Santana - BA

Ao clicar no botão selecionar o method é chamado duas vezes

Mensagem por Daiane »

Continuo com o mesmo problema. ja utilizei o CANCEL UPDATE e infelizmente não adiantou
na minha maquina não ocorre o erro, so na do cliente. testei em varias maquinas,alguns ocorre esse bug e outras não
XHb 1.2.1 + FW 12.05 + Pelles C IDE
"Eu adoraria mudar o mundo, mas não me deram o código-fonte."
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Ao clicar no botão selecionar o method é chamado duas vezes

Mensagem por Kapiaba »

Daiane,

Código: Selecionar todos

 CANCEL // UPDATE
Não use o UPDATE, pois ele atualizará o Dialogo se for MODAL.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Ao clicar no botão selecionar o method é chamado duas vezes

Mensagem por Kapiaba »

Código: Selecionar todos

#include "FiveWin.ch"

FUNCTION Main()
   LOCAL oDlg, oFld, aFld,lAdd ,lSave
   
   MsgInfo( "start" )
   
   SetDlgGradient( { { 1, RGB( 199, 216, 237 ), RGB( 237, 242, 248 ) } } )

   aFld:={1,4300,121,"Descripción        "}
   lAdd:=.f.
   
   DEFINE DIALOG oDlg RESOURCE "CtaAux" TRANSPARENT
   
   REDEFINE FOLDER oFld ;
               ID 4001 ;
               OF oDlg ;
               PROMPTS "&1-Principal","&2-Identificación", "&3-Est.Balances";
               DIALOGS "CtaAux1" ,"CtaAux2", "CtaAux3"

   //--Principal
   REDEFINE GET aFld[1] ID 600 OF oFld:aDialogs[1] WHEN .F.
   REDEFINE GET aFld[2] ID 601 OF oFld:aDialogs[1] WHEN lAdd
   REDEFINE GET aFld[3] ID 602 OF oFld:aDialogs[1] WHEN lAdd
   REDEFINE GET aFld[4] ID 603 OF oFld:aDialogs[1]
   
   REDEFINE BUTTON ID 1 OF oDlg ACTION ( oDlg:End(), lSave := .T. ) // OK
   REDEFINE BUTTON ID 2 OF oDlg ACTION ( oDlg:End(), lSave := .F. ) ;
            CANCEL // UPDATE
   
   ACTIVATE DIALOG oDlg CENTERED
   
   IF lSave
      MsgInfo('ok')
   ENDIF

RETURN  nil
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Ao clicar no botão selecionar o method é chamado duas vezes

Mensagem por Kapiaba »

Arquivo.rc

Código: Selecionar todos

#ifdef __FLAT__
   1 24 "./WinXP/WindowsXP.Manifest"
#endif

#ifdef __64__
   1 24 "WinXP/WindowsXP.Manifest64"
#endif 

CTAAUX DIALOGEX DISCARDABLE 6, 18, 346, 226
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Ficha de empresas"
FONT 10, "MS Shell Dlg"
{
  CONTROL "OK", IDOK, "Button", WS_TABSTOP, 120, 204, 45, 15
  CONTROL "Cancel", IDCANCEL, "Button", WS_TABSTOP, 172, 204, 45, 15
  CONTROL "", 4001, "SysTabControl32", WS_VISIBLE, 4, 4, 276, 144
}

CTAAUX1 DIALOGEX DISCARDABLE 6, 18, 246, 134
STYLE WS_CHILD|DS_3DLOOK|WS_VISIBLE
FONT 10, "MS Shell Dlg"
{
  CONTROL "Edit", 600, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 56, 16, 20, 12
  CONTROL "Edit", 601, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 56, 32, 32, 12
  CONTROL "Edit", 602, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 56, 48, 32, 12
  CONTROL "Edit", 603, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 56, 64, 156, 12
  CONTROL "Empresa", -1, "Static", WS_EX_TRANSPARENT, 8, 20, 28, 8
  CONTROL "Mayor", -1, "Static", WS_EX_TRANSPARENT, 8, 36, 36, 8
  CONTROL "Sub.Cuenta", -1, "Static", WS_EX_TRANSPARENT, 8, 52, 36, 8
  CONTROL "Descripción", -1, "Static", WS_EX_TRANSPARENT, 8, 68, 36, 8
}

CTAAUX2 DIALOGEX DISCARDABLE 6, 18, 246, 134
STYLE WS_CHILD|DS_3DLOOK|WS_VISIBLE
FONT 10, "MS Shell Dlg"
{
  
}

CTAAUX3 DIALOGEX DISCARDABLE 6, 18, 246, 134
STYLE WS_CHILD|DS_3DLOOK|WS_VISIBLE
FONT 10, "MS Shell Dlg"
{
  
}
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Ao clicar no botão selecionar o method é chamado duas vezes

Mensagem por Kapiaba »

Código: Selecionar todos

// Ideia original:
// https://pctoledo.org/forum/viewtopic.php?f=1&t=15482
// Special thanks ao autor do topico: Billy1943.

#Include "FiveWin.ch"
#Include "Directry.ch"

STATIC lSaida := .F., lLigaBotao := .F.

FUNCTION Google_Rua()

   LOCAL oWnd, oActiveX, oFnt, oFont, nKey := VK_RETURN
   LOCAL cEvents := "", cCookieUser
   LOCAL oMapa, mde_uf, mpara_uf, mde_cid, mpara_cid, mde_rua, mpara_rua
   LOCAL oGet1, oGet2, oGet3, oGet4, oBusca, oSaida, oDlg, msearch

   /*
   mpara_uf  := "SP" // uf
   mpara_cid := "SAO PAULO"//cidade
   mpara_rua := "RUA ROCHA"//rua
   */

   mpara_uf  := space(2)
   mpara_cid := space(40)  // PINDAMONHANGABA
   mpara_rua := space(50)

   SetGetColorFocus()

   SkinButtons()

   DEFINE FONT oFnt   NAME "Ms Sans Serif" SIZE 0,  14 BOLD //UnderLine
   DEFINE FONT oFont  NAME "Ms Sans Serif" SIZE 0, -14 BOLD //UnderLine

   DEFINE DIALOG oDlg TITLE "Buscar Rua no Google Maps" ;
          FROM 0,0 TO 304, 480 PIXEL COLORS CLR_BLACK, CLR_WHITE TRANSPARENT

   oDlg:lHelpIcon := .F.

   Set( _SET_INSERT, ! Set( _SET_INSERT ) )

   //@ 11, 01 say "PROCURAR :"
   @ 1, 2 SAY "PROCURAR A RUA:" OF oDlg UPDATE FONT oFont ;
          COLORS CLR_HRED, CLR_WHITE

   //@ 13, 01 say "Estado ..:" get mpara_uf picture "@!"
   @ 2, 2 SAY "Estado ..:" OF oDlg UPDATE FONT oFnt ;
          COLORS CLR_HBLUE, CLR_WHITE

   @ 30, 50 GET oGet1 VAR mpara_uf OF oDlg PIXEL SIZE 25, 12 PICTURE "@!" ;
            CENTER UPDATE FONT oFnt COLORS CLR_BLACK, CLR_WHITE           ;
            VALID VALIDA_GET1( mpara_uf )

   //@ 14, 01 say "Cidade ..:" get mpara_cid picture "@!"
   @ 3, 2 SAY "Cidade ..:" OF oDlg UPDATE FONT oFnt ;
          COLORS CLR_HBLUE, CLR_WHITE

   @ 45, 50 GET oGet2 VAR mpara_cid OF oDlg PIXEL SIZE 175, 12 PICTURE "@!" ;
            UPDATE FONT oFnt COLORS CLR_BLACK, CLR_WHITE                    ;
            VALID VALIDA_GET2( mpara_cid )

   //@ 15, 01 say "Endere‡o :" get mpara_rua picture "@!"
   @ 4, 2 SAY OemToAnsi( "Endere‡o:" ) OF oDlg UPDATE  FONT oFnt ;
          COLORS CLR_HBLUE, CLR_WHITE

   @ 65, 50 GET oGet3 VAR mpara_rua OF oDlg PIXEL SIZE 185, 12 PICTURE "@!" ;
            UPDATE FONT oFnt COLORS CLR_BLACK, CLR_WHITE                    ;
            VALID VALIDA_BOTAO( mpara_rua, oBusca )

   @ 7.00, 13 BUTTON oBusca PROMPT "&Buscar"  OF oDlg ;
              WHEN( lLigaBotao )                      ;
              ACTION ( lSaida := .T., nKey := VK_RETURN, oDlg:End() ) CANCEL

   oBusca:cToolTip := "Pesquisar a Rua no Google Maps"

   @ 7.00, 21 BUTTON oSaida PROMPT "&Saida"  OF oDlg ;
              ACTION ( lSaida := .T., nKey := VK_ESCAPE, oDlg:End() ) CANCEL

   oSaida:cToolTip := "Saida - Exit - Cancelar"

   SET FONT OF oBusca  TO oFont
   SET FONT OF oSaida  TO oFont

   //read

   ACTIVATE DIALOG oDlg CENTERED ;
            VALID( lSaida )

   oFnt:End()
   oFont:End()

   Set( _SET_INSERT, ! Set( _SET_INSERT ) )

   DO CASE
   CASE nKey == VK_ESCAPE .OR. GETKEYSTATE( VK_ESCAPE )

      lSaida := .F.
      lLigaBotao := .F.

      RETURN NIL

   ENDCASE

   // By Billy1943 - Forum PC Toledo. Ideia Original. Agradecimentos.
   mpara_uf  := alltrim( mpara_uf  )
   mpara_cid := alltrim( mpara_cid )
   mpara_rua := alltrim( mpara_rua )
   msearch   := mpara_rua + " " + mpara_cid + " " + mpara_uf

   DEFINE WINDOW oWnd TITLE "FiveWin ActiveX Support"

   oActiveX = TActiveX():New( oWnd, "Shell.Explorer" )

   oActivex:Silent := .T.  // Para Evitar: Erro de Script na Pagina.

   oWnd:oClient = oActiveX // To fill the entire window surface

   // funciona assim quebra se clicar na imagem
   /*
   oActiveX:Navigate( "https://google.com.br/search?q=" + ;
                       ALLTRIM( msearch ) + "&oq=" +      ;
                       ALLTRIM( msearch ) + "&aqs=chrome" )
   */

   // Erro de Script na Pagina?
   // https://www.google.com.br/maps/place
   // gerando erro de navegador antigo. ?????
   //oActiveX:Navigate( "https://www.google.com.br/maps/place/" + msearch  )

   oActiveX:Navigate( "https://www.google.com.br/maps/place/" + ALLTRIM(msearch)  )

   //oActiveX:bOnEvent = { | event, aParams, pParams | cEvents += EventInfo( event, aParams, pParams, oActiveX ) }

   ACTIVATE WINDOW oWnd MAXIMIZED  /*  ;  // Nao quero editar nada.
            VALID ( MemoEdit( cEvents ), .t. ) */

RETURN NIL

FUNCTION VALIDA_GET1( cmpara_uf )

   IF GETASYNCKEY( VK_UP ) // Para nao perder o foco do dialgo
      RETURN( .F. )
   ENDIF

   IF EMPTY( cmpara_uf )

      MsgInfo( OemToAnsi( "OPERA€ÇO INVµLIDA!             " )+CRLF+ ;
               OemToAnsi( "DIGITIE O NOME DA UF...        " )+CRLF+ ;
               OemToAnsi( "TECLE <ENTER> PARA CONTINUAR..." ),      ;
               OemToAnsi( "OPERA€ÇO INVµLIDA!             " ) )

      lLigaBotao := .F.

      RETURN( .F. )

   ENDIF

RETURN( .T. )

FUNCTION VALIDA_GET2( cmpara_cid )

   IF EMPTY( cmpara_cid )

      MsgInfo( OemToAnsi( "OPERA€ÇO INVµLIDA!             " )+CRLF+ ;
               OemToAnsi( "DIGITIE O NOME DA CIDADE...    " )+CRLF+ ;
               OemToAnsi( "TECLE <ENTER> PARA CONTINUAR..." ),      ;
               OemToAnsi( "OPERA€ÇO INVµLIDA!             " ) )

      lLigaBotao := .F.

      RETURN( .F. )

   ENDIF

RETURN( .T. )

FUNCTION VALIDA_BOTAO( cmpara_rua, oBusca )

   IF EMPTY( cmpara_rua )

      MsgInfo( OemToAnsi( "OPERA€ÇO INVµLIDA!             " )+CRLF+ ;
               OemToAnsi( "DIGITIE O NOME DA RUA...       " )+CRLF+ ;
               OemToAnsi( "TECLE <ENTER> PARA CONTINUAR..." ),      ;
               OemToAnsi( "OPERA€ÇO INVµLIDA!             " ) )

      lLigaBotao := .F.

      RETURN( .F. )

   ENDIF

   // TUDO NORMAL, VAI BUSCAR NO GOOGLE

   lLigaBotao := .T.

   oBusca:Enable()
   oBusca:Refresh()

RETURN( .T. )

FUNCTION EventInfo( event, aParams, pParams, oActiveX )

   local cMsg := "Event: " + cValToChar( event ) + CRLF
   local n

   cMsg += "Params: " + CRLF

   for n = 1 to Len( aParams )
   cMsg += cValToChar( aParams[ n ] ) + CRLF
   next

   if event == "BeforeNavigate2"
   // MsgInfo( aParams[ 2 ] )
   // SetEventParam( pParams, 7, .t. ) // Comment this to allow navigation
   endif

RETURN cMsg + CRLF

// END OF PROGRAM
Responder