Árvore de páginas

Uma amostra de código agiliza a programação auxiliando na montagem da estrutura do bloco de declaração. Para criar sua própria amostra de código basta ir em Janela -> Preferências -> (4GL | 4GLP | ADVPL) -> Amostras. 

 Link para configuração e utilização das Amostras: 4. Amostra de Código

Repositório de Amostras do TDS (TOTVS Developer Studio) para facilitar o desenvolvimento em ADVPL


Posicionamento de Tabela
DbSelectArea("${tabela}")
${tabela}->(DbSetOrder(${indice}))
If ${tabela}->(DbSeek(xFilial("${tabela}")+${regra}))

Else

EndIf
While
While !${table}->(Eof())

	${line_selection}${cursor}

	${table}->(DbSkip())

EndDo
For
Local ${var} := 0

For ${var}:= 1 to Len(${array})

	${line_selection}${cursor}

Next ${var}
MVC - Modelo1
#INCLUDE 'PROTHEUS.CH'
#INCLUDE 'FWMVCDEF.CH'
#INCLUDE 'TBICONN.CH'
#INCLUDE 'TOPCONN.CH'
#INCLUDE 'TOTVS.CH'

/*/{Protheus.doc} ${User_Function}
${Descricao}
@author ${user}
@since ${date}
@version undefined
@type function
/*/
User Function ${User_Function}()

Local oBrowse as object

//Criação do objeoto Browse
oBrowse := FWMBrowse():New()

//Seta o Alias Browse
oBrowse:SetAlias('${Alias}')

//Seta a descrição do Browse
oBrowse:SetDescription('${Descricao}')

//Adicao de legendas
//oBrowse:AddLegend( "U01_STATUS =='A'", "GREEN" , "Aluno Ativo")

//Grafico
oBrowse:SetAttach(.T.)

//Ativa o Browse
oBrowse:Activate()

Return()

//-------------------------------------------------------------------
/*/{Protheus.doc} MenuDef
${Descricao} - Menu Funcional
@author ${user}
@since ${date}
@obs Primeiro fonte em MVC
/*/
//-------------------------------------------------------------------
Static Function MenuDef()
Local aRotina as array

aRotina := {}

ADD OPTION aRotina TITLE 'Pesquisar' ACTION 'PesqBrw' OPERATION 1 ACCESS 0
ADD OPTION aRotina TITLE 'Visualizar' ACTION 'VIEWDEF.${User_Function}' OPERATION 2 ACCESS 0
ADD OPTION aRotina TITLE 'Incluir' ACTION 'VIEWDEF.${User_Function}' OPERATION 3 ACCESS 0
ADD OPTION aRotina TITLE 'Alterar' ACTION 'VIEWDEF.${User_Function}' OPERATION 4 ACCESS 0
ADD OPTION aRotina TITLE 'Excluir' ACTION 'VIEWDEF.${User_Function}' OPERATION 5 ACCESS 0
ADD OPTION aRotina TITLE 'Imprimir' ACTION 'VIEWDEF.${User_Function}' OPERATION 8 ACCESS 0
ADD OPTION aRotina TITLE 'Copiar' ACTION 'VIEWDEF.${User_Function}' OPERATION 9 ACCESS 0

Return aRotina

//-------------------------------------------------------------------
/*/{Protheus.doc} ModelDef
${Descricao} - Modelo de Dados
@author ${user}
@since ${date}
@obs Primeiro fonte em MVC
/*/
//-------------------------------------------------------------------
Static Function ModelDef()

// Cria a estrutura a ser usada no Modelo de Dados
Local oStru${Alias} as array
Local oModel as object

oStru${Alias} := FWFormStruct( 1, '${Alias}', /*bAvalCampo*/,/*lViewUsado*/ )

// Cria o objeto do Modelo de Dados
oModel := MPFormModel():New('${User_Function}M', /*bPreValidacao*/, /*bPosValidacao*/, /*bCommit*/, /*bCancel*/ )

// Adiciona ao modelo uma estrutura de formulário de edição por campo
oModel:AddFields( '${Alias}MASTER', /*cOwner*/, oStru${Alias}, /*bPreValidacao*/, /*bPosValidacao*/, /*bCarga*/ )

//Chave Primaria
oModel:SetPrimaryKey( {"${Alias}_FILIAL", "${Alias}_CODIGO"})

// Adiciona a descricao do Modelo de Dados
oModel:SetDescription( '${Descricao}' )

// Adiciona a descricao do Componente do Modelo de Dados
oModel:GetModel( '${Alias}MASTER' ):SetDescription( '${Descricao}' )

Return oModel

//-------------------------------------------------------------------
/*/{Protheus.doc} ViewDef
${Descricao} - Interface com usuário
@author ${user}
@since ${date}
@version undefined

@type function
/*/
//-------------------------------------------------------------------
Static Function ViewDef()

// Cria um objeto de Modelo de Dados baseado no ModelDef do fonte informado
Local oModel as object
// Cria a estrutura a ser usada na View
Local oStru${Alias} as array
Local oView as object

oModel := FWLoadModel( '${User_Function}' )
oStru${Alias} := FWFormStruct( 2, '${Alias}', /*bAvalCampo*/)

// Cria o objeto de View
oView := FWFormView():New()

// Define qual o Modelo de dados será utilizado
oView:SetModel( oModel )

//Adiciona no nosso View um controle do tipo FormFields(antiga enchoice)
oView:AddField( 'VIEW_${Alias}', oStru${Alias}, '${Alias}MASTER' )

// Criar um "box" horizontal para receber algum elemento da view
oView:CreateHorizontalBox( 'SUPERIOR' , 100 )

// Relaciona o ID da View com o "box" para exibicao
oView:SetOwnerView( 'VIEW_${Alias}', 'SUPERIOR' )

// Liga a identificacao do componente
//oView:EnableTitleView('VIEW_${Alias}','${Descricao}')

//Indica se a janela deve ser fechada ao final da operação. Se ele retornar .T. (verdadeiro) fecha a janela
oView:bCloseOnOK := {|| .T.}

Return oView
MVC - Modelo3
#INCLUDE 'PROTHEUS.CH'
#INCLUDE 'FWMVCDEF.CH'
#INCLUDE 'TBICONN.CH'
#INCLUDE 'TOPCONN.CH'
#INCLUDE 'TOTVS.CH'

/*/{Protheus.doc} ${User_Function}
${Descricao}
@author ${user}
@since ${date}
@version undefined
@type function
/*/
User Function ${User_Function}()

Local oBrowse as object

//Criação do objeoto Browse
oBrowse := FWMBrowse():New()

//Seta o Alias Browse
oBrowse:SetAlias('${Alias}')

//Seta a descrição do Browse
oBrowse:SetDescription('${Descricao}')

//Adicao de legendas
//oBrowse:AddLegend( "U01_STATUS =='A'", "GREEN"    , "Aluno Ativo")

//Grafico
oBrowse:SetAttach(.T.)

//Ativa o Browse
oBrowse:Activate()

Return()

//-------------------------------------------------------------------
/*/{Protheus.doc} MenuDef
${Descricao} - Menu Funcional
@author ${user}
@since ${date}
@obs     Primeiro fonte em MVC
/*/
//-------------------------------------------------------------------
Static Function MenuDef()
	Local aRotina as array

	aRotina := {}

	ADD OPTION aRotina TITLE 'Pesquisar'  ACTION 'PesqBrw'          OPERATION 1 ACCESS 0
	ADD OPTION aRotina TITLE 'Visualizar' ACTION 'VIEWDEF.${User_Function}'     OPERATION 2 ACCESS 0
	ADD OPTION aRotina TITLE 'Incluir'    ACTION 'VIEWDEF.${User_Function}'     OPERATION 3 ACCESS 0
	ADD OPTION aRotina TITLE 'Alterar'    ACTION 'VIEWDEF.${User_Function}'     OPERATION 4 ACCESS 0
	ADD OPTION aRotina TITLE 'Excluir'    ACTION 'VIEWDEF.${User_Function}'     OPERATION 5 ACCESS 0
	ADD OPTION aRotina TITLE 'Imprimir'   ACTION 'VIEWDEF.${User_Function}'     OPERATION 8 ACCESS 0
	ADD OPTION aRotina TITLE 'Copiar'     ACTION 'VIEWDEF.${User_Function}'     OPERATION 9 ACCESS 0

Return aRotina

//-------------------------------------------------------------------
/*/{Protheus.doc} ModelDef
${Descricao} - Modelo de Dados
@author ${user}
@since ${date}
@obs     Primeiro fonte em MVC
/*/
//-------------------------------------------------------------------
Static Function ModelDef()

	// Cria a estrutura a ser usada no Modelo de Dados
	Local oStru${Alias} as array
	Local oStru${Alias2} as array
	Local oModel as object

	oStru${Alias} := FWFormStruct( 1, '${Alias}', /*bAvalCampo*/,/*lViewUsado*/ )
	oStru${Alias2} := FWFormStruct( 1, '${Alias2}', /*bAvalCampo*/,/*lViewUsado*/ )

	// Cria o objeto do Modelo de Dados
	oModel := MPFormModel():New('${User_Function}M', /*bPreValidacao*/, /*bPosValidacao*/, /*bCommit*/, /*bCancel*/ )

	// Adiciona ao modelo uma estrutura de formulário de edição por campo
	oModel:AddFields( '${Alias}MASTER', /*cOwner*/, oStru${Alias}, /*bPreValidacao*/, /*bPosValidacao*/, /*bCarga*/ )

	// Adiciona ao modelo uma estrutura de Grid
	oModel:AddGrid("${Alias2}DETAIL", "${Alias}MASTER"/*cOwner*/, oStru${Alias2} , ,/*bLinePost*/,/*bPre*/,/*bPost*/,/*Carga*/)

	// Relacionamento entre os modelos
	oModel:SetRelation("${Alias2}DETAIL",{{"${Alias2}_FILIAL",'xFilial("${Alias2}")'},{"${Alias2}_CODIGO","${Alias}_CODIGO"}},${Alias2}->(IndexKey()))

	//Chave Primaria
	oModel:SetPrimaryKey( {"${Alias}_FILIAL", "${Alias}_CODIGO"})

	// Adiciona a descricao do Modelo de Dados
	oModel:SetDescription( '${Descricao}' )

	// Adiciona a descricao do Componente do Modelo de Dados
	oModel:GetModel( '${Alias}MASTER' ):SetDescription( '${Descricao}' )

Return oModel

//-------------------------------------------------------------------
/*/{Protheus.doc} ViewDef
${Descricao} - Interface com usuário
@author ${user}
@since ${date}
@version undefined

@type function
/*/
//-------------------------------------------------------------------
Static Function ViewDef()

	// Cria um objeto de Modelo de Dados baseado no ModelDef do fonte informado
	Local oModel   as object
	// Cria a estrutura a ser usada na View
	Local oStru${Alias} as array
	Local oStru${Alias2} as array
	Local oView as object

	oModel   := FWLoadModel( '${User_Function}' )
	oStru${Alias} := FWFormStruct( 2, '${Alias}', /*bAvalCampo*/)
	oStru${Alias2} := FWFormStruct( 2, '${Alias2}', /*bAvalCampo*/)

	// Cria o objeto de View
	oView := FWFormView():New()

	// Define qual o Modelo de dados será utilizado
	oView:SetModel( oModel )

	//Adiciona no nosso View um controle do tipo FormFields(antiga enchoice)
	oView:AddField( 'VIEW_${Alias}', oStru${Alias}, '${Alias}MASTER' )

	//Adiciona no nosso View um controle do tipo Grid
	oView:AddGrid( 'VIEW_${Alias2}', oStru${Alias2}, '${Alias2}DETAIL' )

	// Criar um "box" horizontal para receber algum elemento da view
	oView:CreateHorizontalBox( 'SUPERIOR' , 50 )
	oView:CreateHorizontalBox( 'INFERIOR' , 50 )

	// Relaciona o ID da View com o "box" para exibicao
	oView:SetOwnerView( 'VIEW_${Alias}', 'SUPERIOR' )
	oView:SetOwnerView( 'VIEW_${Alias2}', 'INFERIOR' )

	// Liga a identificacao do componente
	//oView:EnableTitleView('VIEW_${Alias}','${Descricao}')

	//Indica se a janela deve ser fechada ao final da operação. Se ele retornar .T. (verdadeiro) fecha a janela
	oView:bCloseOnOK := {|| .T.}

Return oView
User Function
#INCLUDE "TOTVS.CH"
#INCLUDE "PROTHEUS.CH"

/*/{Protheus.doc} ${name}
${description}
@author ${user}
@since ${date}
@version 1.0

@type function
/*/
User Function ${name}()

	${cursor}

Return()
Static Function
/*/{Protheus.doc} ${name}
${description}
@author ${user}
@since ${date}
@version 1.0

@type function
/*/
Static Function ${name}()

	${cursor}

Return()
IF
If (${condition})

	${line_selection}${cursor}

EndIf
Case
Do Case
Case (${condition})

	${cursor}


OtherWise


	${cursor1}


EndCase
Begin SQL
Local ${Alias}	:= GetNextAlias

BeginSQL alias ${Alias}
SELECT
	${table}.*
FROM
	%table:${table}% ${table}
WHERE
	${prefixo}_FILIAL = %xFilial:${table}% AND
	${table}.%notDel%
EndSql

While (${Alias})->( !Eof() )
	
	(${Alias})->(DbSkip())

Enddo

(${Alias})->(DbCloseArea())
Histórico de Alteração
//Alterado por ${user} no dia ${date} as ${time}