Abrindo um site com TWebChannel e TWebEngine – Maratona AdvPL e TL++ 514

Nesse vídeo demonstraremos a utilização das classes TWebChannel e TWebEngine, que servem para abrir uma navegação com a internet e carregar um site em uma tela.

Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zExe514
Cria uma navegação com a possibilidade de abrir páginas em html ou sites através de urls
@type  Function
@author Atilio
@since 05/04/2023
@see https://tdn.totvs.com/display/tec/TWebChannel e https://tdn.totvs.com/display/tec/TWebEngine
@obs 
    
    **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/

User Function zExe514()
    Local aArea     := GetArea()
    Local cRastreio := "AA123456785BR"
    Local aPergs    := {}
  
    //Adiciona os parametros para a pergunta
    aAdd(aPergs, {1, "Rastreio",   cRastreio, "", ".T.", "", ".T.", 80, .T.})
  
    //Mostra uma pergunta com parambox para filtrar o subgrupo
    If ParamBox(aPergs, "Informe os parametros", , , , , , , , , .F., .F.)
        fMontaBusca()
    EndIf
  
    RestArea(aArea)
Return
  
Static Function fMontaBusca()
    Local cUrl          := ""
    //Tamanho da janela
    Private nJanLarg    := 800
    Private nJanAltu    := 600
    //Navegador Internet
    Private oWebChannel
    Private nPort
    Private oWebEngine
    Private aComandos   := {}
  
    //Defina a URL e os comandos que vão ser executados
    cUrl := "https://rastreamento.correios.com.br/app/index.php"
    aAdd(aComandos, 'document.getElementById("objeto").value = "' + MV_PAR01 + '"; ')

    //Cria a dialog
    DEFINE DIALOG oDlg TITLE "Pesquisa de Transportadora" FROM 000,000 TO nJanAltu,nJanLarg PIXEL

        // Prepara o conector WebSocket
        oWebChannel := TWebChannel():New()
        nPort := oWebChannel::connect()

        // Cria componente
        oWebEngine := TWebEngine():New(oDlg, 0, 0, 100, 100,, nPort)
        oWebEngine:bLoadFinished := {|self,url| fRodaScript(url) }
        oWebEngine:navigate(cUrl)
        oWebEngine:Align := CONTROL_ALIGN_ALLCLIENT

    ACTIVATE DIALOG oDlg CENTERED
    
Return
  
Static Function fRodaScript(cUrl)
    Local nAtual := 0
  
    //Percorre os comandos
    For nAtual := 1 To Len(aComandos)
        oWebEngine:runJavaScript(aComandos[nAtual])
    Next
Return

Bom pessoal, por hoje é só.

Abraços e até próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação