Olá pessoal…
Na vídeo aula de hoje, vou falar um pouco sobre tipos de Funções em AdvPL (User Function, Static Function, etc).
Abaixo os links do TDN sobre o assunto:
Function
Abaixo o código fonte utilizado para os testes (zTpFuncA.prw):
//Bibliotecas
#Include "Protheus.ch"
/*/{Protheus.doc} zTpFuncA
Teste de Função de Usuário
@type function
@author Atilio
@since 13/11/2015
@version 1.0
@example
u_zTpFuncA()
/*/
User Function zTpFuncA()
Local aArea := GetArea()
//Chamada de função padrão
Mata010()
//Chamada de função de usuário
u_zTpFuncB()
//Chamada de função estática no mesmo prw
fTesteA()
//Chamada de função estática de outro prw
StaticCall(zTpFuncB, fTesteB, "Daniel")
RestArea(aArea)
Return
/*-------------------------------------------------*
| Função: fTesteA |
| Autor: Daniel Atilio |
| Data: 13/11/2015 |
| Descr.: Função estática de teste |
*-------------------------------------------------*/
Static Function fTesteA()
Local aArea := GetArea()
//Mostrando mensagem
MsgInfo("Estou em uma função estática <b>(A)</b>!", "Atenção")
RestArea(aArea)
Return
E abaixo o fonte utilizado nos laços (zTpFuncB.prw):
//Bibliotecas
#Include "Protheus.ch"
/*/{Protheus.doc} zTpFuncB
Teste de Função de Usuário
@type function
@author Atilio
@since 13/11/2015
@version 1.0
@example
u_zTpFuncB()
/*/
User Function zTpFuncB()
Local aArea := GetArea()
//Mostra mensagem e chama função estática
MsgInfo("Estou na função u_zTpFuncB()", "Atenção")
fTesteB()
RestArea(aArea)
Return
/*-------------------------------------------------*
| Função: fTesteB |
| Autor: Daniel Atilio |
| Data: 13/11/2015 |
| Descr.: Função estática de teste |
*-------------------------------------------------*/
Static Function fTesteB(cPar1)
Local aArea := GetArea()
Default cPar1 := ""
//Mostrando mensagem
MsgInfo("Estou em uma função estática <b>(B)</b>, "+cPar1+"!", "Atenção")
RestArea(aArea)
Return
/*
Abaixo uma função de usuário com o nome similar com a função acima, porém ultrapassa 8 caracteres
User Function zTpFuncB2()
Return
*/
/*
Abaixo uma função padrão, porém somente é possível compilar se tiver chave de compilação
Function zTpFunPad()
Return
*/
Se quiser fazer o download desses códigos, acesse nosso GitHub pelo link github.com/dan-atilio/AdvPL (Exemplos > Vídeo Aulas > 007 – Tipos de Funções).
Bom pessoal, por hoje é só.
Abraços e até a próxima.