Como colocar um help em um Get customizado em AdvPL

Olá pessoal…

Hoje vou mostrar como mostrar o help de campos (F1) em GETs customizados em Dialogs customizadas em AdvPL.


Primeiramente pessoal, devemos utilizar o método bHelp do MsGet, depois utilizamos a função ShowHelpCpo, sendo que o primeiro parâmetro representa a Ajuda, e o segundo a Validação. Abaixo o exemplo:

		oGetNor:bHelp := {||	ShowHelpCpo(	"cGetNor",;
								{"Texto Linha 1"+STR_PULA+"Texto Linha 2"},2,;
								{"Solução Linha 1"},2)}

Abaixo um print do exemplo acima:

Exemplo de Help Customizado
Exemplo de Help Customizado

Agora, caso queira pegar o help de um campo padrão (que exista no dicionário – SX3), utilize a função GetHlpSoluc, no exemplo abaixo, eu utilizo o B1_COD (Código do Produto):

		oGetBD:bHelp := {||	ShowHelpCpo(	"cGetBD",;
								{GetHlpSoluc("B1_COD")[1]},2,;
								{GetHlpSoluc("B1_COD")[2]},2)}

Abaixo um print do exemplo acima:

Exemplo de Help Customizado utilizando o Help de um campo padrão
Exemplo de Help Customizado utilizando o Help de um campo padrão

Abaixo o exemplo completo do fonte utilizado:

//Bibliotecas
#Include "Protheus.ch"

//Bibliotecas
#Define STR_PULA	Chr(13)+Chr(10)

/*/{Protheus.doc} zExempF1
Exemplo de help (F1) em Gets customizados
@type function
@author Atilio
@since 27/10/2015
@version 1.0
	@example
	u_zExempF1()
/*/

User Function zExempF1()
	Local aArea := GetArea()
	//Dimensões da janela
	Local nJanAltu := 080
	Local nJanLarg := 220
	//Objetos da janela
	Private oSayNor, oGetNor, cGetNor := Space(10)
	Private oSayBD,  oGetBD,  cGetBD  := Space(10)
	Private oDlgPvt
	
	//Criando a janela
	DEFINE MSDIALOG oDlgPvt TITLE "Janela" FROM 000, 000  TO nJanAltu, nJanLarg COLORS 0, 16777215 PIXEL
		//Get Normal
		@ 006, 006 SAY        oSayNor PROMPT "Normal:"                  SIZE 050, 007 OF oDlgPvt PIXEL
		@ 003, 060 MSGET      oGetNor VAR    cGetNor                    SIZE 040, 010 OF oDlgPvt PIXEL
		oGetNor:bHelp := {||	ShowHelpCpo(	"cGetNor",;
								{"Texto Linha 1"+STR_PULA+"Texto Linha 2"},2,;
								{"Solução Linha 1"},2)}
								
		//Get Banco
		@ 026, 006 SAY        oSayBD  PROMPT "BD:"                      SIZE 050, 007 OF oDlgPvt PIXEL
		@ 023, 060 MSGET      oGetBD  VAR    cGetBD                     SIZE 040, 010 OF oDlgPvt PIXEL
		oGetBD:bHelp := {||	ShowHelpCpo(	"cGetBD",;
								{GetHlpSoluc("B1_COD")[1]},2,;
								{GetHlpSoluc("B1_COD")[2]},2)}
	ACTIVATE MSDIALOG oDlgPvt CENTERED
	
	RestArea(aArea)
Return

Esses e outros códigos, estão disponíveis gratuitamente no nosso GitHub, acesse em github.com/dan-atilio/AdvPL.

Bom pessoal, por hoje é só.
Abraços e até a próxima.

About Dan_Atilio

Analista e desenvolvedor de sistemas. Técnico em Informática pelo CTI da Unesp. Graduado em Banco de Dados pela Fatec Bauru. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor do projeto Terminal de Informação, onde são postados tutoriais e notícias envolvendo o mundo da tecnologia.

Deixe uma resposta