Exemplo de como usar o PlaceHolder no AdvPL

Olá pessoal…

Você sabia que os gets no AdvPL, podem ter aquele famoso texto de PlaceHolder? Bastante utlizado em páginas web.

O que seria PlaceHolder? Sabe quando você vai fazer um cadastro em algum site, e naqueles campos tem um texto de fundo, por exemplo, “Insira o nome completo”, ai quando você clica e começa a digitar, ele “some” esse texto que ficava atrás do campo?

Esse recurso é chamado de PlaceHolder, é como se fosse algo para deixar intuitivo ao usuário, o que deve ser colocado naquele campo. No AdvPL também existe esse recurso, basta editar o atributo cPlaceHold, colocando um texto qualquer, que será apresentado no Get, e quando você editar, irá sumir.

Por exemplo, montei uma função bem simples, onde o PlaceHolder, mostra ao usuário para colocar o Código, o Nome ou o CNPJ do Fornecedor. E ao digitar algo, ele some com esse Texto ao fundo.

Exemplo de PlaceHolder

Abaixo o exemplo completo montado, conforme print acima.

//Bibliotecas
#Include "Protheus.ch"
#Include "TopConn.ch"

/*/{Protheus.doc} PTFINC04
Consulta de Títulos a Pagar
@author Atilio
@since 09/01/2017
@version 1.0
@type function
/*/

User Function PTFINC04()
	Local aArea := GetArea()
	//Variáveis da tela
	Private oDlgPvt
	Private oGrpFor
	Private oGetFor
	Private cGetFor := Space(250)
	Private oGrpAco
	Private oBtnExe
	//Tamanho da Janela
	Private nJanLarg := 500
	Private nJanAltu := 120
	Private nJanMeio := ((nJanLarg)/2)/2
	Private nTamBtn  := 048
	
	//Criando a janela
	DEFINE MSDIALOG oDlgPvt TITLE "Consulta de Títulos a Pagar" FROM 000, 000  TO nJanAltu, nJanLarg COLORS 0, 16777215 PIXEL
		//Grupo com o Get
		@ 003, 003  GROUP oGrpFor TO 30, (nJanLarg/2)-1        PROMPT "Fornecedor: " OF oDlgPvt COLOR 0, 16777215 PIXEL
			@ 010, 006  MSGET oGetFor VAR cGetFor SIZE (nJanLarg/2)-9, 013 OF oDlgPvt COLORS 0, 16777215 PIXEL
			oGetFor:cPlaceHold := "Insira o Código, Nome ou CNPJ..."
		
		//Grupo Ações com o Botão
		@ (nJanAltu/2)-30, 003 GROUP oGrpAco TO (nJanAltu/2)-3, (nJanLarg/2)-1 PROMPT "Ações: " OF oDlgPvt COLOR 0, 16777215 PIXEL
			@ (nJanAltu/2)-24, nJanMeio - (nTamBtn/2) BUTTON oBtnExe PROMPT "Verificar" SIZE nTamBtn, 018 OF oDlgPvt ACTION(fVerifica()) PIXEL
		
	//Ativando a janela
	ACTIVATE MSDIALOG oDlgPvt CENTERED
	
	RestArea(aArea)
Return

/*---------------------------------------*
 | Func.: fVerifica                      |
 | Desc.: Executa a fórmula digitada     |
 *---------------------------------------*/

Static Function fVerifica()
	Local aArea    := GetArea()
	
	MsgInfo(cGetFor, "Atenção")
	
	RestArea(aArea)
Return

Bom pessoal, por hoje é só.
Abraços e até a 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.

2 Responses

  1. Oliverio Sierra disse:

    Gracias por compartir, sin embargo no funciono, lo compile en protheus 11 y me dice que la propiedad cPlaceHold no es valida. Quiero suponer que es porque no tengo actualizado algún *.CH

    • Dan_Atilio disse:

      Boa noite Oliverio, tudo bem?
      Na verdade não tem haver com a CH mesmo, mas sim por uma questão de atualização.
      O recurso de PlaceHolder foi criado no Protheus 12.
      Espero ter ajudado.
      Um grande abraço.

Deixe uma resposta para Dan_AtilioCancelar resposta

Terminal de Informação