Você está na página 1de 4

38.

Outras aplicaes da interface visual do ADVPL

38.1. MaWndBrowse()
Descrio: Browse que permite a visualizao de registros para arquivos / tabelas que
no possuem estrutura definida no Dicionrio de Dados do sistema.
Sintaxe: MaWndBrowse (nLin1, nCol1, nLin2, nCol2, cTitle, cAlias, aCampos, aRotina,
cFunLeg, cTopFun, cBotFun, lCentered, aResource, nMod, aPesqui, cSeek,
lDic, lSavOrd)
Parmetros:
nLin1
nCol1
nLin2
nCol2
cTitle
cAlias
aCampos
aRotina
cFunLeg
cTopFun
cBotFun
lCentered
aResource

nModelo

aPesqui
cSeek
lDic
lSavOrd

Linha inicial do browse


Coluna inicial do browse
Linha final do browse
Coluna final do browse
Ttulo do browse (obrigatrio)
Alias da tabela corrente podendo ser um temporrio
Se lDic=.T. utilizar o SX3, do contrrio o aCampos
informado
Idntico ao aRotina para mBrowse
Funo que dever retornar um valor lgico e com isso ser
atribudo semafro na primeira coluna do browse
Mostrar os registros com a chave de
Mostrar os registros com a chave ate
Valor verdadeiro centraliza
aAdd(aResource,{"IMAGEM","Texto significativo"})
Posio do Menu:
1- Horizontal (superior)
2- Vertical (esquerda)
3- Horizontal (inferior)
aAdd(aPesqui{"Ttulo",nOrdem}), se no passado ser
utilizado o AxPesqui
Chave principal para a busca, exemplo: xFilial("???")
Parmetro em conjunto com aCampos
Estabelecer a ordem aps pesquisas.

Estrutura do array aCampos


aAdd(aCampo,{X3_CAMPO,X3_PICTURE,X3_TITULO,X3_TAMANHO})

- 524 ADVPL Completo

Aparncia:

Exemplo: MaWndBrowse para arquivo temporrio

#include "protheus.ch"
/*/
+----------------------------------------------------------------------| Funo
| WndBrwTRB
| Autor | Arnaldo R. Junior | Data |
|
+----------------------------------------------------------------------| Descrio | Demonstra a utilizao da MaWndBrowse com Temporrio
|
+----------------------------------------------------------------------| Uso
| Curso ADVPL
|
+----------------------------------------------------------------------/*/
User Function WndBrwTRB()
// Variveis para o Arquivo Temporario
Local cChave
:= ""
Local cArqTrb
:= ""
Local aStruTRB := {}
// Variveis para o MaWndBrowse
Local cTitulo
:= "Cadastro Temporario"// Ttulo obrigatrio
Local cAlias
:= "TRB" // Alias da tabela corrente podendo ser TRB
Local cFunLeg
:= "" // Funo que dever retornar um valor lgico e com isso
ser atribudo semafro na primeira coluna do browse
Local cTopFun
:= "" // Mostrar os registros com a chave de
Local cBotFun
:= "" // Mostrar os registros com a chave ate
Local lCentered := .T. // Valor verdadeiro centraliza
Local aResource := {} // aAdd(aResource,{"IMAGEM","Texto significativo"})
Local nModelo
:= 1 // 1- Menu do aRotina
Local aPesqui
:= {} // aAdd(aPesqui{"Ttulo",nOrdem}), se no passado ser
utilizado o AxPesqui
Local cSeek
:= "" // Chave principal para a busca, exemplo: xFilial("???")
Local lDic
:= .F. // Parmetro em conjunto com aCampos
Local lSavOrd
:= .T. // Estabelecer a ordem aps pesquisas.
- 525 ADVPL Completo

// Variaveis para a MsAdvSize


Local lEnchBar := .F. // Se a janela de dilogo possuir enchoicebar (.T.)
Local lPadrao
:= .F. // Se a janela deve respeitar as medidas padres do
//Protheus (.T.) ou usar o mximo disponvel (.F.)
Local nMinY
:= 400 // Altura mnima da janela
Local aSize

:= MsAdvSize(lEnchBar, lPadrao, nMinY)

Private cCadastro := " "


Private aCampos
:= {} // Se lDic=.T. utilizar o SX3, do contrrio o aCampos
//informado -> aAdd(aCampo,{X3_CAMPO,X3_PICTURE,X3_TITULO,X3_TAMANHO})
Private aRotina
:= {} // Idntico ao aRotina para mBrowse
aAdd(aRotina,{"Pesquisar" ,"AxPesqui",0,1})
aAdd(aRotina,{"Visualizar","U_TVisual",0,2})
aAdd(aRotina,{"Incluir"
,"U_TInclui",0,3})
aAdd(aRotina,{"Alterar"
,"U_TAltera",0,4})
aAdd(aRotina,{"Excluir"
,"U_TExclui",0,5})
// Estrutura do Arquivo: Nome do campo / tipo, tamanho, decimais (SX3 para
//temporrio)
AADD(aStruTRB,{"TRB_FILIAL"
,"C",02,0}) // Nome_Campo , Tipo_Campo,
//Tamanho, Decimal
AADD(aStruTRB,{"TRB_ID"
,"C",14,0})
AADD(aStruTRB,{"TRB_NOME"
,"C",20,0})
AADD(aStruTRB,{"TRB_IDADE"
,"N",03,0})
AADD(aStruTRB,{"TRB_STATUS"
,"C",01,0})
// aCampos padro para a MaWndBrowse
//AADD(aCampos,{<Nome_Campo>,<Picture>,<Titulo>,<Tamanho>})
// aCampos melhorado para a WndBrwTRB
//AADD(aCampos,{<Nome_Campo>,<Picture>,<Titulo>,<Tamanho>,<Tipo>,<cWhen>,<lObrig
//atorio>})
// Nota: lObrigatorio deve ser sempre a ultima informacao do aCampos
AADD(aCampos,{"TRB_FILIAL"
AADD(aCampos,{"TRB_ID"
AADD(aCampos,{"TRB_NOME"
AADD(aCampos,{"TRB_IDADE"
AADD(aCampos,{"TRB_STATUS"

,"@!" ,"Filial"
,"@!" ,"Matricula"
,"@!" ,"Nome"
,"@E 999","Idade"
,"@!" ,"Status"

,02,"C",".F.",.T.})
,14,"C",".F.",.T.})
,20,"C",".T.",.F.})
,03,"N",".T.",.F.})
,01,"C",".T.",.T.})

If ( Select( "TRB" ) <> 0 )


dbSelectArea ( "TRB" )
dbCloseArea ()
Endif
//
// Crio arq. de trab. p/ gravar as inconsistencias.

//
cArqTrb
:= CriaTrab(aStruTRB,.t.)
dbUseArea(.T.,,cArqTrb,"TRB",.T.,.F.)
cChave
:= "TRB_FILIAL+TRB_ID"
IndRegua("TRB",cArqTrb,cChave,,,"Selecionando Registros...")

- 526 ADVPL Completo

dbSelectArea( "TRB" )
MaWndBrowse(aSize[7],aSize[2],aSize[6],aSize[5],cTitulo,cAlias,aCampos,aRotina,,
cTopFun,cBotFun,lCentered,,nModelo,,cSeek,lDic,lSavOrd)
If ( Select( "TRB" ) <> 0 )
dbSelectArea ( "TRB" )
dbCloseArea ()
Endif
Return

38.1.1.

Enchoice para Arquivos Temporrios

Para aproveitar inteiramente o recurso da MaWndBrowse utilizada com arquivos


temporrios, necessrio implementar uma funo do tipo Enchoice para realizar as
operaes de Visualizar, Incluir, Alterar e Excluir os registros deste arquivo / tabela.
Com foco nesta necessidade, foi desenvolvida para o curso de ADVPL a funo
TEnchoice.
Descrio: Funo para manipulao de registros de um arquivo temporrio simular a
Enchoice do ambiente Protheus.
Sintaxe: TEnchoice(oDlg, aCampos, nLeftE, nTopE, nHeightE, nWidthE, lEnchBar)
Parmetros:
oDlg
aCampos
nLeftE
nTopE
nHeightE
nWidthE
lEnchBar

Objeto Dialog no qual a TEnchoice ser vinculada


Estrutura de campos para exibio da tela da TEnchoice
Coordenada horizontal em pixels.
Coordenada vertical em pixels.
Altura em pixels
Largura em pixels.
Se a enchoice ser montada em conjunto com uma barra de
botes do tipo Enchoicebar()

Pr-requisitos da funo chamadora:


Para correta utilizao da funo TEnchoice so necessrios os seguintes tratamentos /
definies na funo chamadora:

Tratamento 01: Montagem do array aCampos


O array aCampos utilizado pela TEnchoice possui basicamente o mesmo formato do
array utilizado pela funo Modelo2().
"<Variavel>"
{nLinha,nColuna}
"<Titulo>"
"<Picture>"
"<Validacao>"
"<F3>"

Nome da varivel Private que est vinculada ao campo


digitvel.
Posio em pixels do campo na Enchoice.
Ttulo do campo.
Picture de formatao do campo.
Validao do campo digitvel.
Consulta F3 vinculada ao campo.
- 527 ADVPL Completo