Você está na página 1de 7

Processo ViewDef Basico - 1 Entidade

1 - Criar Variaveis
aModel Cria um objeto de Modelo de dados baseado no ModelDef() do fonte informado
oView Interface de visualização construída
oStruZZ1 Cria a estrutura a ser usada na View
2 - Instanciar a variabeis Classe
aModel := FWLoadModel( 'COMP011_MVC' )
COMP011_MVC'-é nome do fonte de onde queremos obter o modelo de dados (Model).
oView := FWFormView():New()
oStruZZ1 := FWFormStruct(2,Alias)
3 - Define qual o Modelo de dados será utilizado na View
oView:SetModel( oModel )
4 - Adiciona no nosso View um controle do tipo formulário (antiga Enchoice)
oView:AddField( 'VIEW_ZZ1', oStruZZ1, 'ZZ1MASTER' )
5 - Criar um "box" horizontal para receber algum elemento da view
oView:CreateHorizontalBox( 'TELA' , 100 )
6 - Relaciona o identificador (ID) da View com o "box" para exibição
oView:SetOwnerView( 'VIEW_ZZ1', 'TELA' )
7 - Retorna o objeto de View criado
Return oView

Processo ViewDef Pai e Filho - 2 Entidades


1 - Criar Variaveis
aModel Cria um objeto de Modelo de dados baseado no ModelDef() do fonte informado
oView Interface de visualização construída
oStruZZ1 Cria a estrutura a ser usada na View - Pai
oStruZZ2 Cria a estrutura a ser usada na View - Filho
2 - Instanciar a variabeis Classe
aModel := FWLoadModel( 'COMP011_MVC' )
COMP011_MVC'-é nome do fonte de onde queremos obter o modelo de dados (Model).
oView := FWFormView():New()
oStruZZ1 := FWFormStruct(2,Alias)
oStruZZ2 := FWFormStruct(2,Alias)
3 - Define qual o Modelo de dados será utilizado na View
oView:SetModel( oModel )
4 - Adiciona no nosso View um controle do tipo formulário (antiga Enchoice)
oView:AddField( 'VIEW_ZZ1', oStruZZ1, 'ZZ1MASTER' )
ZZ1MASTER' - Definido na funcao ModelDef - oModel:AddFields
5 - Adiciona no nosso View um controle do tipo Grid (antiga Getdados)
oView:Grid( 'VIEW_ZZ2', oStruZZ2, 'ZZ2DETAIL' )
ZZ2DETAIL' - Definido na funcao ModelDef - oModel:AddGrid
6 - Cria um "box" horizontal para receber cada elemento da view
oView:CreateHorizontalBox('SUPERIOR',30)
oView:CreateHorizontalBox('INFERIOR',70)
7 - Relaciona o identificador (ID) da View com o "box" para exibição
oView:SetOwnerView( 'VIEW_ZZ1', 'SUPERIOR' )
oView:SetOwnerView( 'VIEW_ZZ2', 'INFERIOR' )
8 - Retorna o objeto de View criado
Return oView
Classes ViewDef
1 ) FWFormView
Fornece uma interface gráfica para um model(FWFormModel/MPFormModel).
Sintax : FWFORMVIEW():New([ oViewOwner ])-> NIL
Objeto do tipo FWFormView que será o pai da view. Quando uma view possui uma view pai, ela
oViewOwner não realiza a gravação dos dados quando o botão OK é acionado. O model é preenchido, todavia
a gravação dos dados fica como responsabilidade da view pai.

1.1 ) SetModel
Seta o relacionamento da View com o Model. Esse método é obrigatório ser usado, pois uma view sempre precisa de um
model.
Sintax : oView:SetModel([ oObj ])-> NIL
oObj Objeto do tipo FWFormModel/MPFormModel a se associar a view.
oModel := FWLoadModel('A20MVC')
Exemplo
oView:SetModel(oModel)

1.2 ) AddField
Adiciona ao view um formulário do tipo FormFields(antiga enchoice). Nesse formulário o usuário poderá editar um
registro por vez.
Sintax :AddField([ cViewID ], [ oStruct ], [ cSubModelID ])-> NIL
cViewID ID do formulário. ID será utilizado em diversos momentos na criação da view.
oStruct Objeto do tipo FWFormViewStruct a ser usado no formulário
cSubModelID ID do submodelo do tipo FormField do model ao qual o formulário se relaciona.
Pode-se usar o mesmo ID do submodelo para o formulário, quando isso é feito não é
Observações
necessário passar o terceiro parametro.
Static Function ModelDef()
Local oModel := MPFormModel():New("MODEL")
Local oStruZA1:= FWFormStruct(1,'ZA1')
oModel:addFields('ZA1MASTER',,oStruZA1)
Return

Static Function ViewDef()


Exemplo
Local oModel := ModelDef()
Local oView := FWFormView():New()
Local oStruZA1:= FWFormStruct(2,'ZA1')

oView:SetModel(oModel)
oView:addField('VIEW_ZA1', oStruZA1, 'ZA1MASTER')
Return

1.3 ) AddGrid
Adiciona ao view um formulário do tipo FWFormGrid. Nesse formulário o usuário poderá editar N registros por vez.
Sintax oView:AddGrid([ cViewID ], [ oStruct ], [ cSubModelID ], [ uParam4 ], [ bGotFocus ])-> NIL
cViewID ID do formulário. ID será utilizado em diversos momentos na criação da view.
oStruct Objeto do tipo FWFormViewStruct a ser usado no formulário.
cSubModelID ID do submodelo do tipo FormField do model ao qual o formulário se relaciona.
uParam4 Compatibilidade.
Bloco de código invocado no momento que o grid ganha o foco. O bloco não recebe
bGotFocus
parametro e nem precisa retornar algum valor.
Pode-se usar o mesmo ID do submodelo para o formulário, quando isso é feito não é
Observações
necessário passar o terceiro parametro.
Static Function ModelDef()
Local oModel := MPFormModel():New("MODEL")
Local oStruZA1:= FWFormStruct(1,'ZA1')
Local oStruZA2:= FWFormStruct(1,'ZA2')

oModel:addFields('ZA1MASTER',,oStruZA1)
oModel:addGrid('ZA2DETAIL',,oStruZA2)
Return

Exemplo Static Function ViewDef()


Local oModel := ModelDef()
Local oView := FWFormView():New()
Local oStruZA1:= FWFormStruct(2,'ZA1')
Local oStruZA2:= FWFormStruct(2,'ZA2')

oView:SetModel(oModel)
oView:addField('VIEW_ZA1',oStruZA1,'ZA1MASTER')
oView:addGrid('VIEW_ZA2',oStruZA2,'ZA2DETAIL')
Return

1.4 ) SetOwnerView
Relaciona um formulário ou uma pasta com um box visual.
Sintax oView:SetOwnerView([ cViewID ], [ cIDBox ])-> NIL
cViewID ID do formulário (definido pelo metodo addField/addGrid/AddTreeGrid).
ID do Box que onde será encaixado o componente (definido pelo metodo
cIDBox
CreateHorizontalBox/CreateVerticalBox).
Exemplo oView:SetOwnerView("VIEW_ZZ1",'SUPERIOR')

1.5 ) CreateFolder
Cria uma pasta dentro de um box. Esse método cria somente o espaço onde será possível criar as abas da pasta,
ele não cria as abas, para cria-las veja o método AddSheet.
Sintax oView:CreateFolder([ cIDFolder ], [ cIDOwner ])-> NIL
cIDFolder ID da Folder a ser criada

Id do Owner. Pode ser um box ou um formulário do tipo FormField que ja contenha folders(via
cIDOwner estrutura,Ex. Dic). No segundo caso não será criada outra pasta, as abas adicionadas a pasta
serão colocadas dentro do FormField, ao lado das abas já existentes da estrutura de dados.

1.6 ) addSheet
Adiciona uma aba dentro de uma folder.
Sintax oView:addSheet([ cIDFolder ], [ cIDSheet ], [ cTitulo ], [ bAction ])-> NIL
cIDFolder ID do folder
cIDSheet ID para a Aba
cTitulo Titulo da Aba
Bloco de codigo acionado quando a Aba for selecionada, não recebe nenhum parametro
bAction
e nem deve retornar valor.
oView:CreateFolder( 'PASTAS' )
Exemplo oView:AddSheet( 'PASTAS', 'ABA01', 'Cabeçalho' )
oView:AddSheet( 'PASTAS', 'ABA02', 'Item' )
1.7 ) SetOwner
Seta o Owner (Dialog principal) onde a view deve ser criada.
Sintax oView:SetOwner([ oOwner ], [ lCloseOnOK ])-> NIL
oOwner Objeto tipo Dialog(tDialog, tWindow, tPanel) que será pai dos objetos graficos.
Se verdadeiro determina que ao clicar em OK na ControlBar(se ela for usada) ira fechar o
lCloseOnOK
Owner.
Quando utilizamos o FWBrowse na rotina, não é necessário implementar a passagem de
Observações
Owner, pois é feita pelo FWBrowse.

1.8 ) GetValue
Retorna o valor de um determinado campo.
Sintax oView:GetValue([ cIDSubModel ], [ cFieldID ], [ nLine ])-> xValue
cIDSubModel ID do submodelo ou então do formulário (somente se os dois forem iguais)
cFieldID ID do campo
nLine Número da Linha(caso o submodelo seja um Grid)
Retorno xValue Valor do Campo em questão.

1.8 ) createVerticalBox
Cria um box vertical dentro do container do view. Ele é necessário para dividir a tela em diversas partes. Um box
vertical somente pode ser criado dentro de um box horizontal.
Sintax oView:createVerticalBox([ cID ], [ nPercHeight ], [ cIdOwner ], [ lFixPixel ], [ cIDFolder ], [ cIDSheet ])-> NIL
cID ID do Box a ser utilizado.

nPercHeight Valor da Altura do box( caso o lFixPixel seja verdadeiro é a quantidade de pixel exato).

cIdOwner ID do Box Horizontal pai. Podemos fazer diversas criações uma dentro da outra.
Determina que o valor passado no parametro nPercHeight é na verdade a quantidade de
lFixPixel
pixel a ser usada.
ID da folder onde queremos criar o box. Esse parametro deve ser passado sempre que o
cIDFolder box for criado dentro de uma sheet e, se passado esse valor, é necessário informar o
parametro cIDSheet.
ID da Sheet onde queremos criar o box, esse parametro deve ser passado sempre que o
cIDSheet
box for criado dentro de uma sheet.
Exemplo oView:createVerticalBox("SUPERIOR",30)

1.9 ) addIncrementField
Adiciona um campo para ser AutoIncremental em um FormGrid.
Sintax oView:addIncrementField([ cIDView ], [ cField ])-> NIL
cIDView Id do formulário onde o campo está, necessario ser um FormGrid.
cField Id do Campo que será autoIncremental
Exemplo oView:addIncrementField('VIEW_ZZ2','ZZ2_ITEM')

1.10 ) GetModel
Fornece um objeto de submodelo do Model.
Sintax oView:GetModel([ cIDSubModel ])-> oRetorno
cIDSubModel ID do submodelo ou então do formulário (somente se os dois forem iguais).
Retorno oRetorno Objeto do tipo FWFormFieldsModel ou FWFormGridModel.

1.11 ) SetDescription
Atribui um texto explicativo sobre o objetivo da view. O objetivo é mostrado em diversos operações, tais como web
services, relatórios e schemas (xsd).
Sintax oView:SetDescription([ cDescription ])-> NIL
cDescription Descrição do objetivo da view
1.12 ) GetDescription
Sintax oView:GetDescription()-> cDescription
Fornece um texto com a descrição do objetivo do View.
Retorno cDescription Descrição do objetivo do view.

1.13 ) SetNoInsertLine - Grid


Gride não aceita inserir registro - Mesmo procedimentos ModelDef

1.14 ) SetNoUpdateLine - Grid


Gride não aceita alterar registro - Mesmo procedimentos ModelDef

1.15 ) SetNoDeleteLine - Grid


Gride não aceita exclusão registro - Mesmo procedimentos ModelDef

1.16 ) SetNoDeleteLine - Grid


Adiciona botões do desenvolvedor na barra de ferramentas do formulario.

1.17 ) addUserButton
Adiciona botões do desenvolvedor na barra de ferramentas do formulario.
Sintax oView:addUserButton([ cTitle ], [ cResource ], [ bBloco ], [ cToolTip ], [ nShortCut ], [ aOptions ])-> NIL
cTitle Titulo do Botao
cResource Nome do resource compilado no RPO que será a imagem do botao.
Bloco de codigo que será executado, esse bloco recebe o objeto oView(FWFormView)
bBloco
como parametro.
cToolTip Comentário do botão
nShortCut Codigo da Tecla para criação de Tecla de Atalho
Array unidimensional com as
operações(MODEL_OPERATION_VIEW,MODEL_OPERATION_INSERT
aOptions
,MODEL_OPERATION_UPDATE,MODEL_OPERATION_DELETE) que o botao ira ser
mostrado, caso o parametro nao seja informado, irá mostrar em todos.

1.18 ) Refresh
Executa o refresh dos componentes Visuais.
Sintax oView:Refresh([ cViewID ])-> NIL
ID do formulário. Se o parametro não for passado, o refresh será executado em todos os
cViewID
componentes da view.

1.19 ) GetMaxLines
Retorna quantas linhas o um formulário do tipo grid aceita.
Sintax oView:GetMaxLines([ cIDView ])-> nMax
cIDView Id do formulário a ser analisado.
Retorno nMax Quantidade maxima de linhas permitidas.

1.20 ) GetOperation
Retorna a operação que está definida no model. - Mesmo procedimentos ModelDef

1.21 ) SetFieldAction
Define uma acao a ser executada apos a validacao do campo. Como o formulário não é passado, se existir mais de
um formulário com o mesmo campo, o campo verificado será o primeiro que for encontrado.
Sintax oView:SetFieldAction([ cIDField ], [ bAction ])-> NIL
cIDField ID campo, pode ser um campo de qualquer formulário da view
Bloco com a acao a ser executada. Recebe como parametro o objeto de View, o ID do
bAction
formulário, o ID do campo e o conteudo do campo.
oView:SetFieldAction( 'A1_COD', { |oView, cIDView, cField, xValue| SuaFuncao( oView,
cIDField
cIDView, cField, xValue ) } )

1.22 ) HasField
Informa de um determinado campo existe na estrutura de dados de um formulário.
Sintax oView:HasField([ cIDView ], [ cIdField ])-> Se
cIDView Id do formulário
cIdField Id do campo
Retorno Se verdadeiro, o campo existe na estrutura de dados.
Exemplo oView:HasField( "VIEW_SA1", "A1_COD" )

1.23 ) HideFolder
Oculta uma aba de uma pasta. Pode ser usado tanto para as pastas provientes da estrutura de dados que existem dentro de
um formulário do tipo FormField quanto para as pastas criadas no view através do método CreateFolder.
Sintax oView:HideFolder([ cID ], [ xFolder ], [ nType ])-> NIL
cID ID do formulário do tipo FormField ou ID da Folder
xFolder Número da Aba ou Título dela
Tipo de Folder [1-
nType Estrutura de Dados(FormField) [2 -
View(Método CreateFolder) ]

1.24 ) SetProgressBar
Ativa ou desativa o uso da MsgRun na carga do formulario, utilizar em rotina onde a carga pode demorar muito.
Sintax oView:SetProgressBar([ lValue ])-> NIL
lValue Se verdadeiro, habilita o uso.

1.25 ) SetTimer
Define um timer para a janela do view.
Sintax oView:SetTimer([ nInterval ], [ bAction ])-> NIL
nInterval Indica o intervalo, em milissegundos , para disparar o bloco de código do Timer.
bAction Indica o bloco de código que será executado a cada intervalo definido.

1.26 ) createHorizontalBox
Cria um box horizontal dentro do container do view. Ele é necessário para dividir a tela em diversas partes. Um box
horizontal somente pode ser criado dentro de um box vertical ou então no painel principal da view.
Sintax oView:createHorizontalBox([ cID ], [ nPercHeight ], [ cIdOwner ], [ lFixPixel ], [ cIDFolder ], [ cIDSheet ])
cID ID do Box a ser utilizado.
nPercHeight Vlr da Altura box( caso o lFixPixel seja verdadeiro é a quantidade de pixel exato).
cIdOwner ID do Box Vertical pai. Podemos fazer diversas criações uma dentro da outra.
Determina que o valor passado no parametro nPercHeight é na verdade a quantidade de
lFixPixel
pixel a ser usada.
ID da folder onde queremos criar o box. Esse parametro deve ser passado sempre que o
cIDFolder box for criado dentro de uma sheet e, se passado esse valor, é necessário informar o
parametro cIDSheet.
ID da Sheet onde queremos criar o box, esse parametro deve ser passado sempre que o
cIDSheet
box for criado dentro de uma sheet.
2 ) FWFormStruct
Esta função fornece o objeto com as estruturas de metadado do dicionário de dados, utilizadas pelas classes Model
e View.
Sintax : oStruc := FWFormStruct(<nType >, <cAliasSX2 >, [ bSX3 ])-> oStruct
nType Tipo de estrutura ( 1-Model | 2-View )
cAliasSX2 Alias da tabela
Bloco de Código de avaliação do dicionário de dados. O bloco recebe como parâmetro o
bSX3 ID do campo e deve retornar um lógico. Se retornar verdadeiro o campo é incluído na
estrutura.
Retorno oStruct Estrutura da classe
Exemplo oStruc:= FWFormStruct( 2, 'ZZ1' , { |x| ALLTRIM(x) $ 'ZA1_MUSICA, ZA1_TITULO' } )

2.1 ) RemoveField
Remove um campo da estrutura.
Sintax : oStruc:RemoveField(<cIdField >)-> NIL
cIdField ID do campo

2.2 ) HasField
Informa se um determinado campo existe na estrutura
Sintax : oStruc:HasField(<cIdField >)-> NIL
cIdField ID do campo a ser analisado

3 ) FWCalcStruct
Esta função fornece o objeto de estrutura de dados do tipo calculo pra ser usado na view. As estruturas são fornecidadas
com base nos calcs do Modelo, adicionados atráves do método AddCalc.
Sintax : oStr := FWCalcStruct(<oModelCalc >)-> oStruct
oModelCalc Objeto de submodelo do tipo Calculo
Retorno oStruct Estrutura de dados para o objeto.
Static Function ModelDef()
oModel := MPFormModel():New( 'COMP022M')
oModel:AddCalc( 'COMP022CALC1', 'ZA1MASTER', 'ZA2DETAIL', 'ZA2_AUTOR',
'ZA2__TOT01', 'COUNT', { | oFW | COMP022CAL( oFW, .T. ) },,'Total Pares' )
Return oModel
Exemplo Static Function ViewDef()
Local oStr3:= FWCalcStruct( oModel:GetModel('COMP022CALC1') )
oView:AddField('CALC', oStr3,'COMP022CALC1')
oView:CreateHorizontalBox( 'BOXFORM8', 50)
oView:SetOwnerView('CALC','BOXFORM8')
Return oView

4 ) FWLoadView
Funcao que retorna um objeto de view de determinado fonte.
Sintax : oView := FWLoadView(<cProgram >)-> oObjeto
cProgram Nome do programa-fonte
Static Function ViewDef()
Exemplo // Utilizando uma view que ja existe em outra aplicacao
Return FWLoadView( 'COMP011_MVC' )

Você também pode gostar