Criando programas para serem executados na abertura do SmartClient

Olá pessoal…

Hoje vou mostrar como executar um programa na abertura do SmartClient com a opção de mostrar ou não a tela de Login para o usuário entrar no sistema.

A utilidade de desenvolver esse recurso, é fazer com que os usuários não consigam alterar parâmetros de Módulo, nem acessar outras rotinas, será mostrado dois exemplos, ambos executam a rotina MATA010 (Cadastro de Produtos).

Antes de mais nada, após compilar, para executar, basta chamar o U_ e o nome da rotina, conforme print abaixo.

Programa na tela inicial

Programa na tela inicial

No primeiro exemplo (u_zInicio1), basicamente é aberto o cadastro de produtos, utilizando o tema SUNSET (vermelho) e não é mostrado a tela de login (é utilizado o RPCSetEnv para setar a Empresa 99 e a Filial 01).

Programa sem abrir a tela de login

Programa sem abrir a tela de login

No segundo exemplo (u_zInicio2), é mostrado a tela de Login para ser informado o usuário e senha, utilizando o tema OCEAN (azul) e em seguida já é aberto o cadastro de Produtos.

Programa abrindo a tela de Login

Programa abrindo a tela de Login

Abaixo o código fonte utilizado.

/*/{Protheus.doc} zInicio1
Função executada no Programa Inicial, sem precisar usuário e senha
@type function
@author Atilio
@since 03/10/2016
@version 1.0
	@example
	u_zInicio1()
/*/

User Function zInicio1()
	//Cria o MsApp
	MsApp():New('SIGATST') 
	oApp:CreateEnv()
	
	//Seta o tema do Protheus (SUNSET = Vermelho; OCEAN = Azul)
	PtSetTheme("SUNSET")
	
	//Define o programa de inicialização 
	oApp:bMainInit:= {|| MsgRun("Configurando ambiente...","Aguarde...",;
		{|| RpcSetEnv("99","01"), }),;
		MATA010(),;
		Final("TERMINO NORMAL")}
	
	//Seta Atributos 
	__lInternet := .T.
	lMsFinalAuto := .F.
	oApp:lMessageBar:= .T. 
	oApp:cModDesc:= 'SIGATST'
	
	//Inicia a Janela 
	oApp:Activate()
Return Nil

/*/{Protheus.doc} zInicio2
Função executada no Programa Inicial, utilizando login
@type function
@author Atilio
@since 03/10/2016
@version 1.0
	@example
	u_zInicio2()
/*/

User Function zInicio2()
	//Cria o MsApp
	MsApp():New('SIGACOM')
	oApp:CreateEnv()
	
	//Seta o tema do Protheus (SUNSET = Vermelho; OCEAN = Azul)
	PtSetTheme("OCEAN")
	
	//Define o programa que será executado após o login
	oApp:cStartProg	:= 'MATA010'
	
	//Seta Atributos 
	__lInternet := .T.
	
	//Inicia a Janela 
	oApp:Activate()
Return Nil

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. William Sposito disse:

    Boa Tarde Dan, tentei implementar o código e dá o seguinte erro:

    ERROR: argument #2 error, expected B->A

    • Bom dia William, tudo joia?

      Pode ser que algum recurso tenha sido alterado ou descontinuado desde esse exemplo de 2016 (9 anos atrás, no print ainda era Protheus 11).

      Se possível, poste o error log completo ou a trace do stack para ver onde está originando o erro.

      Tenha uma ótima e abençoada quinta feira.

      Um forte abraço.

Deixe uma resposta

Terminal de Informação