Você está na página 1de 14

Processo ModelDef Basico - 1 Entidade

1 - Criar Variaveis
aModel Cria o objeto do Modelo de Dados
oStruZZ1 Cria a estrutura a ser usada no Modelo de Dados
2 - Instanciar a variabeis Classe
aModel := MPFormModel():New(cIdentificador)
oStruZZ1 := FWFormStruct(1,Alias)
3 - Adiciona ao modelo um componente de formulário
oModel:AddFields( 'ZA0MASTER', /*cOwner*/, oStruZZ1)
4 - Adiciona a descrição do Modelo de Dados
oModel:SetDescription( 'Modelo de dados de Autor/Interprete' )
5 - Adiciona a descrição do Componente do Modelo de Dados
oModel:GetModel( 'ZZ1MASTER' ):SetDescription( 'Dados de Autor/Interprete' )
6 - Definição da chave primária (SetPrimaryKey
oModel:SetPrimaryKey({'CAMPOS'})

Processo ModelDef Pai e Filho - 2 Entidades


1 - Criar Variaveis
aModel Cria o objeto do Modelo de Dados
oStruZZ1 Cria a estrutura a ser usada no Modelo de Dados - Pai
oStruZZ2 Cria a estrutura a ser usada no Modelo de Dados - Filho
2 - Instanciar a variabeis Classe
aModel := MPFormModel():New(cIdentificador)
oStruZZ1 := FWFormStruct(1,Alias)
oStruZZ2 := FWFormStruct(1,Alias)
3 - Adiciona ao modelo um componente de formulário
oModel:AddFields( 'ZZ1MASTER', /*cOwner*/, oStruZZ1)
4 - Adiciona ao modelo uma componente de grid
oModel:AddGrid( 'ZZ2DETAIL', 'ZZ1MASTER', oStruZZ2)
5 - Faz relacionamento entre os componentes do model
oModel:SetRelation('ZZ2DETAIL', { {'ZZ2_FILIAL' , 'xFilial("ZZ2")'} ,
{'ZZ2_CODCOR' , 'ZZ1_CODIGO'}},ZZ2->(IndexKey(1)) )
6 - Adiciona a descrição do Modelo de Dados
oModel:SetDescription('Modelo de Correntista' )
7 - Adiciona a descrição do Componente do Modelo de Dados
oModel:GetModel( 'ZZ1MASTER' ):SetDescription( 'Dados do Correntista' )
oModel:GetModel( 'ZZ2DETAIL' ):SetDescription( 'Dados das Movimentações' )
8 - Retorna o Modelo de dados
Return oModel

Classes ModelDef
1 ) MPFormModel
classe utilizada para a construção de um objeto de modelo de dados (Model).
Sintax : MPFORMMODEL():New(< cID >, < bPre >, < bPost >, < bCommit >, < bCancel >)-> NIL
cID Identificador do modelo
Bloco de código que será executado pré-validação do modelo, ao realizar a alteração no campos,
bPre
Retorno : Logico .T. libera alteração e .F. Nao libera alteração. {|oModel| Funcao(oModel)}

Bloco de código de pós-validação do modelo, equivale ao "TUDOOK".O bloco recebe como


parâmetro o objeto de Model e deve retornar um valor lógico.O bloco será invocado antes da
persistência dos dados para validar o model.Se o retorno for verdadeiro e não houver nenhum
bPost
submodelo inválido, será feita a gravação dos dados.Se retornar falso, não será possível realizar a
gravação e um erro será atribuído ao model, sendo necessário indicar a natureza do erro através
da função Help.
Bloco de código de persistência dos dados. Ele é invocado pelo método CommitData. O bloco
bCommit
recebe como parâmetro o objeto do Model e deve realizar a gravação dos dados.
Bloco de código de cancelamento da edição. Ele é invocado pelo método CancelData. O bloco
recebe como parâmetro o objeto do Model.Quando esse bloco é passado, o tratamento de
bCancel
numeração automática não é mais realizado, a menos que o bloco chame a função
FWFormCancel.

1.1 ) AddFields
Adiciona ao modelo um submodelo de edição por campo (FormField). Um submodelo do tipo Field permite manipular
somente um registro por vez. Ele tem um relacionamento do tipo 1xN ou 1x1 com outros SubModelos ou então não tem
nenhum relacionamento.
Sintax : oModel:AddFields(<cId >, <cOwner >, <oModelStruct >, <bPre >, <bPost >, <bLoad >)-> NIL
cID Identificador do modelo. O Id será solicitado em diversas operações com este submodelo.
Identificador superior do submodelo, o Owner é o submodelo que se relaciona diretamente com
cOwner
o formfield.
oModelStruct Objeto com a estrutura de dados do tipo FWFormModelStruct.
Bloco de Código de pré-validação do submodelo. Esse bloco é invocado quando há uma tentativa
de atribuição de valores. O bloco recebe por parametro o objeto do
FormField(FWFormFieldsModel), a identificação da ação e a identificação do campo que está
sofrendo a atribuição. As identificações que podem ser passadas são as seguintes: -
"CANSETVALUE" : valida se o submodelo pode ou não receber atribuição de valor. - "SETVALUE" :
bPre
valida se o campo do submodelo pode receber aquele valor. Nesse caso o bloco recebe um
quarto parametro que contem o valor que está sendo atribuido ao campo. Para todos os casos o
bloco deve retornar um valor lógico, indicando se a ação pode ou não ser executada. Se o retorno
for falso um erro será atribuido no Model, sendo necessário indicar a natureza do erro através da
função Help.
Bloco de Código de pós-validação do submodelo, ele é equivalente ao "TUDOOK". O bloco de
código recebe como parametro o objeto de model do FormField(FWFormFieldsModel) e deve
retornar um valor lógico. Este bloco é invocado antes da persistência(gravação) dos dados,
bPost
validando o submodelo . Se o retorno for verdadeiro a gravação será realizada se os demais
submodelos também estiverem validos, do contrário um erro será atribuido no Model, sendo
necessário indicar a natureza do erro através da função Help.

Bloco de carga dos dados do submodelo. Este bloco será invocado durante a execução do
método activate desta classe. O bloco recebe por parametro o objeto de model do
FormField(FWFormFieldsModel) e um valor lógico indicando se é uma operação de cópia. Espera-
se como retorno um array com os dados que serão carregados no objetp, o array deve ter a
brLoad estrutura abaixo: [1] Array com os dados, a ordem dos dados deve seguir exatamente a mesma
ordem dos campos da estrutura de dados

[1][1] ExpX: "Nome"


[1][2] ExpX: "Cidade"
[2] ExpN: Id do registro (RecNo)

1.2 ) AddGrid
Adiciona ao modelo um submodelo de edição por grid (FormGrid). Um submodelo do tipo Grid permite manipular diversos
registros por vez. Ele tem um relacionamento do tipo Nx1 ou NxM com outros Submodelos.
Sintax : oModel:AddGrid(<cId >, <cOwner >, <oModelStruct >, <bLinePre >, <bLinePost >, <bPre >, <bLinePost >, <bLoad >)-
> NIL
cID Identificador do modelo. O Id será solicitado em diversas operações com este submodelo.
Identificador superior do submodelo. O Owner é o submodelo que se relaciona diretamente com
cOwner
o formgrid.
oModelStruct Objeto com a estrutura de dados do tipo FWFormModelStruct.
Bloco de Código de pre-edição da linha do grid. O bloco é invocado na deleção de linha, no
undelete da linha e nas tentativas de atribuição de valor. Recebe como parametro o objeto de
modelo do FormGrid(FWFormGridModel), o número da linha atual e a identificação da ação. A
Identificação da ação pode ser um dos itens abaixo: - "UNDELETE" - "DELETE" - "SETVALUE" :
nesse caso, serão passados mais três parametros. O 4º parametro é o identificador do campo que
bLinePre está sendo atualizado, 5º parametro é o valor que está sendo atribuido e o 6º parametro é o
valor que está atualmente no campo. - "CANSETVALUE" : nesse caso será passado mais um
parametro. O 4º parametro é o identificador do campo que está tentando ser atualizado. O
retorno do bloco deve ser um valor lógico que indique se a linha está valida para continuar com a
ação. Se retornar verdadeiro, executa a ação do contrário atribui um erro ao Model, sendo
necessário indicar a natureza do erro através da função Help.

Bloco de código de pós validação da linha do grid, equivale ao "LINHAOK" Recebe como
parametro o objeto de modelo do FormGrid(FWFormGridModel) e o número da linha que está
sendo validada. O bloco será invocado antes da gravação dos dados. Espera-se um retorno lógico
bLinePost
do bloco indicando se a linha está ou não valida. Caso o retorno seja verdadeiro a gravação será
realiza, do contrario um erro será atribuido no Model e a gravação não será realizada, sendo
necessário indicar a natureza do erro através da função Help.

Bloco de Código de pré-validação do submodelo. O bloco é invocado na deleção de linha, no


undelete da linha, na inserção de uma linha e nas tentativas de atribuição de valor. Recebe como
parametro o objeto de modelo do FormGrid(FWFormGridModel), o número da linha atual e a
identificação da ação. A Identificação da ação pode ser um dos itens abaixo:

- "UNDELETE"
- "DELETE"
- "ADDLINE" : nesse caso não será passado nada para o parametro de numero de linha
bPre
- "SETVALUE" : nesse caso, serão passados mais três parametros. O 4º parametro é o
identificador do campo que está sendo atualizado, o 5º parametro é o valor que está sendo
- "CANSETVALUE" : nesse caso será passado mais um parametro. O 4º parametro é o
identificador do campo que está tentando ser atualizado.
O retorno do bloco deve ser um valor lógico que indique se a linha está valida para continuar com
a ação. Se retornar verdadeiro, a atualização é permitida, do contrário um erro será atribuido no
Model, sendo necessário indicar a natureza do erro através da função Help.
Bloco de código de pós validação da linha do grid, equivale ao "LINHAOK" Recebe como
parametro o objeto de modelo do FormGrid(FWFormGridModel) e o número da linha que está
sendo validada. O bloco será invocado antes da gravação dos dados e na inclusão de uma linha.
bLinePost
Espera-se um retorno lógico do bloco indicando se a linha está ou não valida. Caso o retorno seja
falso um erro será atribuido no Model e a gravação não será realizada, sendo necessário indicar a
natureza do erro através da função Help.
Bloco de carga dos dados do submodelo. Este bloco será invocado durante a execução do
método activate desta classe. O bloco recebe por parametro o objeto de model do
FormGrid(FWFormGridModel) e um valor lógico indicando se é uma operação de cópia. Espera-
se como retorno um array com os dados que serão carregados no objeto, o array deve ter a
bLoad estrutura abaixo:
[n]
[n][1] ExpN: Id do registro (RecNo)
[n][2] Array com os dados, os dados devem seguir exatamente a mesma ordem da estrutura de
dados
1.3 ) GetWhenFields
Retorna array com os campos que precisam ser avaliados no When
Sintax : oModel:GetWhenFields(< cIdForm >)
cIDForm Identificador do modelo. O Id será solicitado em diversas operações com este submodelo.

1.4 ) DeActivate
Método de desativação da classe. Quando a classe é desativada, os dados do submodelo são perdidos e o objeto passa a
aceitar novamente os métodos de parametrização, tais como addField, setActivate e etc.
Este método deve ser utilizado para reparametrizar a classe ou para reinicializar o preenchimento do submodelo.
Sintax : oModel:DeActivate()

1.5 ) SetVldActivate
Seta um bloco que será chamado antes do Activate do model. Ele pode ser utilizado para inibir a inicialização do model. Se o
retorno for negativo, uma exceção de usuário será gerada. O code-block recebe como parâmetro o objeto model.
Sintax : oModel:SetVldActivate(< bBloco >)-> NIL
bBloco Code-Block a ser chamado

1.6 ) SetPost
Seta um bloco que será chamado para de validação do submodelo.
Sintax : oModel:SetPost(< bBloco >, [ lAcumula ])-> NIL
bBloco Code-Block a ser chamado
lAcumula Se verdadeiro, não substitui o bloco de post anterior, e sim adiciona a validação no final.

1.7 ) SetPre
Seta um bloco que será chamado para a pré-validação do submodelo.
Sintax : oModel:SetPost(< bBloco >, [ lAcumula ])-> NIL
bBloco Code-Block a ser chamado
lAcumula Se verdadeiro, não substitui o bloco anterior, e sim adiciona a validação no final.

1.8 ) GetModel
Obtenção de componente do modelo de dados. Durante o
desenvolvimento várias vezes teremos que manipular o modelo de dados (Model), para facilitar essa manipulação podemos
ao invés de trabalhar como o modelo todo, trabalhar com uma parte específica (um componente) de cada vez.
Sintax : oModel:GetModel( IdForm )
IdForm Identificador definico em : AddFields ou AddGrid

1.9 ) SetDescription
Defina sempre uma descrição para os componentes do modelo. Adicionamos a
descrição do modelo de dados : oModel:SetDescription Adicionamos a descrição dos
componentes do modelo de dados : oModel:GetModel( idForm ):SetDescription
Sintax : oModel:SetDescription(cDesc)
cDesc Descrição do modelo de dados
Sintax : oModel:GetModel(idForm):SetDescription(cDesc)
IdForm Identificador definico em : AddFields ou AddGrid
cDesc Descrição do modelo de dados

1.10 ) GetId
Fornece o Id do objeto informado no método new.
Sintax : oModel:GetId()-> Id
Id Retorna o Id do objeto
1.11 ) GetDescription
Fornece um texto contendo a descrição do modelo, que é informado no método SetDescription.
Sintax : oModel:GetDescription()-> cDescription
cDescription Retorna Descrição do objetivo do modelo

1.12 ) AddCalc
Adiciona ao modelo um submodelo de campos calculados baseado em campos de um submodelo do tipo grid. Esse
submodelo deve ser usado para fazer calculos, por exemplo, pode-se criar um calc para somar a coluna valor total do item,
tendo assim o total de todos os itens. Pode-se criar um calc do tipo média e fazer a média das quantidades de um grid, por
exemplo. O submodelo calc suporta diversos campos de calculo, precisando ter no minimo 1 e no máximo N. Ou seja, pode-
se criar um calc "TOTAIS" dentro dele criar dois campos calculado, um para o total e outro para a média.
Sintax : oModel:AddCalc([ cId ], [ cOwner ], [ cIdForm ], [ cIdField ], [ cIdCalc ], [ cOperation ], [ bCond ], [ bInitValue ], [
cTitle ], [ bFormula ], [ nTamanho ], [ nDecimal ])-> NIL
cId Identificador do submodelo. O Id será solicitado em diversas operações.
Identificador owner do submodelo. Esse ID correponde ao owner do grid usado como base para o
cOwner
submodelo calc.
cIdForm Identificador do submodelo do tipo grid que será a base para os calculos.
cIdField Identificador do campo que será a base do calculo.
cIdCalc Identificador para o campo que será calculado.
cOperation Identificador da operação a ser realizada ( SUM, COUNT, AVERAGE, FORMULA )
Bloco de código referente a condicão para avaliação do campo calculado. Recebe como
bCond parametro o objeto do model(FwFormModel) e deve retornar um valor lógico. Se o retorno for
verdadeiro, executa a operação para o campo calculado.
Bloco de codigo para com o valor inicial para o campo calculado. Recebe como
bInitValue
parametro o objeto do modelo e deve retornar o valor inicial.
cTitle Titulo do campo calculado
Bloco de Código Formula a ser utilizada quando o parametro operacao é do tipo
FORMULA.Recebe como parametros:
- o objeto do model (FwFormModel)
- o valor da atual do campo calculado
bFormula - o conteudo do campo do submodelo Grid
- campo logico indicando se é uma execuçao de soma (.T.) ou subtracao (.F.).
O valor retornado será atribuido ao campo calculado.
Exemplo: {|oModel,nTotalAtual,xValor,lSomando|
Calculo(oModel,nTotalAtual,xValor,lSomando)}
nTamanho Tamanho do campo calculado, se nao for informado usa o tamanho do campo base.
Numero de casas decimais do campo calculado, se nao for informado usa o tamanho do decimal
nDecimal do campo base.
Um submodelo de calc somente pode ser criado abaixo de um submodelo do tipo grid.
Observações
Lembrando que sera necessario criar as informações no "VIEWDEF" para mostrar o campo

1.12 ) AddRules
Adiciona uma relação de dependência entre dois campos, definindo que o preenchimento de um campo depende do
preenchimento de outro. Por exemplo, podemos definir que o campo Código da Loja só pode ser preenchido após o
preenchimento do campo Código do Cliente. A regra pode ser criada com campos do mesmo submodelo ou com campos de
submodelos diferentes.
Sintax : oModel:AddRules([ cIDSubModel ], [ cIDField ], [ cIDTargetSubModel ], [ cIDFieldTarget ], [ nType ])-> NIL
IDSubModel Identificador do submodelo do campo receptor
cIDField Identificador do campo receptor
cIDTargetSubModel Identificador do submodelo do campo disparador
cIDFieldTarget Identificador do campo disparador
nType Identificador da operacao de relacionamento. Existem três opções:
Tipo 1 - Pré Validação: Adiciona uma relação de dependência entre os campos, impedindo a
atribuição de valor caso os campos de dependência não tenham valor atribuído. Por exemplo, o
preenchimento do campo Código da Loja só pode ser preenchido após o preenchimento do
campo Código do Cliente. Tipo 2 - Pós Validação: Adiciona uma relação de
nType
dependência entre o receptor e o disparador, provocando uma reavaliação em caso de
atualização do campo receptor. Por exemplo, após o preenchimento do campo Código da Loja a
validação é reavaliado caso o Código do Cliente seja alterado.
Tipo 3 - Ambas : Aplica a pré e a pós validação simultaneamente.

1.13 ) GetDependency
Fornece a relacao de modelos que são dependentes (filhos) do modelo ou de um submodelo
Sintax : oModel:GetDependency([ cId ])-> aModels
Identificador do modelo de proprietário, caso não seja passado esse parametro o método irá
cId
retornar os filhos do modelo
aModels Estrutura
[n][1] Tipo do objeto FIELD ou GRID
Retorno [n][2] Id do objeto
[n][3] Objeto do modelo (FWFormFieldModel ou FWFormGridModel)
[n][4] Array com a estrutura dos filhos no mesmo formato

1.14 ) GetModelStruct
Fornece a Estrutura do modelo ou de um submodelo
Sintax : oModel:GetModelStruct([ cId ])-> aModels
cId Identificador do modelo ou de um submodelo
aModels Estrutura
[n][1] Tipo do objeto FIELD ou GRID
Retorno [n][2] Id do objeto
[n][3] Objeto do modelo (FWFormFieldModel ou FWFormGridModel)
[n][4] Array com a estrutura dos filhos no mesmo formato

1.15 ) GetXMLData
Fornece uma string com os dados do modelo no formato XML, conforme o modo de operação especificado (
SetOperation ) e se o objeto esta ativado ( Activate ) ou não (deactivate). Quando o objeto esta desativado ou a
operação é de inclusão uma folha de dados em branco é fornecida.
Sintax : oModel:GetXMLData([ lDetail ], [ nOperation ], [ lXSL ], [ lVirtual ], [ lDeleted ], [ lEmpty ], [ lDefinition ], [
cXMLFile ])-> cXML

Indica se o xml gerado deve incluir as tags de detalhamento dos dados. Aconselha-se a
lDetail evitar o detalhamento dos dados, uma vez que eles estão contido no Schema do XML (
GetXMLSchema ).
nOperation Indica a operação que será indicada na exportação do XML
lXSL Informe se o layout deve ser gerado
lVirtual Indica se os campos virtuais devem estar contidos no xml gerado
lDeleted Indica se as linhas deletadas dos grids devem estar contidas no xml gerado

lEmpty Indica se gera xml com campos nao obrigatorios vazios (utilizado na geracao do XSLT)

lDefinition Indica se gera xml com a definicao (tratamento para o E4X do javascript utilizado no BPM)
Nome do arquivo XML a ser gerado com path (default StartPath). Se este parametro for
cXMLFile
informado a geracao sera em arquivo automaticamente
Retorno cXML XML com do modelo e os dados
1.16 ) GetJSONData
Fornece uma string JSON de dados do modelo, conforme o modo de operação especificado ( SetOperation ) e se o
objeto esta ativado ( Activate ) ou não (deactivate). Quando o objeto esta desativado ou a operação é de inclusão
uma folha de dados em branco é fornecida.
Sintax : oModel:GetJSONData([ lDetail ], [ nOperation ], [ lVirtual ], [ lDeleted ], [ lEmpty ])-> cJson
lDetail Indica se deve incluir as tags de detalhamento dos dados
nOperation Indica a operação que será indicada na exportação - ::NOPERATION
lVirtual Indica se os campos virtuais devem estar contidos
lDeleted Indica se as linhas deletadas dos grids devem estar contidas
lEmpty Indica se gera com campos nao obrigatorios vazios
Retorno cJson JSON com o modelo e os dados

1.17 ) GetXMLSchema
Fornece uma string com o schema ( XSD ) do modelo de dados. Este método fornece a descrição dos elementos
do XML, as validações em lista, as validações de tamanho e tipo de dados e os campos de preenchimento
obrigatório.
Sintax : oModel:GetXMLSchema([ lVirtual ], [ lTypeDef ], [ lOnlyStruct ])-> cXSD
lVirtual Informa se os campos virtuais devem ser adicionados no schema
Informa se a definição dos campos devem ser adicionadas. Isto é importante quando o
lTypeDef
arquivo é gerado com mais de um modelo.
Informa se somente a estrutura do schema deve ser gerada. Neste caso, os campos
lOnlyStruct
obrigatório não são exportados
Retorno cXSD Schema ( XSD ) do modelo de dados

1.18 ) SetValue
Atribui um valor a folha de dados do objeto executando sua validação conforme o tipo de operação configurado (
SetOperation ). Caso o objeto não possa receber dados um erro pode ser gerado ( SetErrorMessage ) ou uma
exceção de usuário ( queda do sistema ).
Sintax : oModel:SetValue([ cIdForm ], [ cIdField ], [ xValue ])-> lRetorno
cIdForm Codigo do submodelo do Modelo que terá uma atribuicao
cIdField Codigo/Nome do atributo da folha de dados
xValue Valor a ser atribuido
Retorno lRetorno Indica se o valor foi atribuido

1.19 ) LoadValue

Carrega um valor a folha de dados do objeto. Este metodo somente pode ser utilizado quando há SetValue na
pilha de chamadas de função ( CallStack ). Diferentemente do metodo SetValue, este método não executa a
validação do campo, mas fornece todas as indicações de que ele foi atualizado. Ele é muito utíl quando dentro de
uma validação de campo, necessitamos alterar valores de outros campos, sem que isto implique em valida-los

Sintax : oModel:LoadValue([ cIdForm ], [ cIdField ], [ xValue ])-> lRetorno


cIdForm Codigo do submodelo do Modelo que terá uma atribuicao
cIdField Codigo/Nome do atributo da folha de dados
xValue Valor a ser atribuido
Retorno lRetorno Indica se o valor foi carregado

1.20 ) VldData
Valida toda a folha de dados do objeto modelo, ou um sub-parte dela, assegurando que o mesmo possa ser
gravado com toda a integridade de dados garantida. Este método verifica se todos os elementos da estrutura do
modelo estão validos e executa o code-block de pos-validação de cada um deles, bem como o code-block de
validação final do modelo. O objeto é considerado valido se todas as validações retornarem verdadeiro, caso
contrário um erro ( SetErrorMessage ) será gerado.
Sintax : oModel:VldData([ cIDModel ], [ lVldOwner ])-> lRetorno
ID inicial que se deve fazer a validação, no caso que se queira validar uma parte do
cIDModel model, passando esse parametro o metodo ira validar o modelo passado e seus filhos, e
não irá setar o modelo geral como validado.
Verifica se será validado o ID do model e seus filhos (.T.) ou se será validado apenas o
lVldOwner
contexto do ID (.F.)
Retorno lRetorno Folha de dados valida

1.21 ) GetValue
Recupera o valor da folha de dados do objeto.
Sintax : oModel:GetValue([ cIdForm ], [ cIdField ])-> xRetorno
cIdForm Codigo do submodelo
cIdField Codigo/Nome do atributo da folha de dados
Retorno xRetorno Conteudo do campo

1.22 ) CanSetValue
Valida se é possível atribuir um valor a folha de dados do objeto.
Sintax : oModel:CanSetValue([ cIdForm ], [ cIdField ])-> lRetorno
cIdForm Codigo do submodelo que terá uma atribuicao
cIdField Codigo/Nome do atributo da folha de dados
Retorno lRetorno Indica se o valor pode ser atribuido

1.23 ) SetRelation
Atribui o critério de relacionamento entre os submodelos. A especificação do relacionamento entre os submodelos
de dados do objeto modelo, garante a carga dos dados e a correta atualização das chaves estrangeiras durante a
execução do método FWCommit.
Sintax : oModel:SetRelation([ cIdForm ], [ aRelation ], [ cOrderBy ])-> NIL
cIdForm Codigo do submodelo do Modelo de destino do relacionamento
Estrutura de relacionamento
[n]
aRelation
[n][1] ExpC: ID do campo do submodelo origem
[n][2] ExpC: ID do campo do submodelo destino
cOrderBy Ordem de apresentação

1.24 ) GetRelation
Fornece o critério de relacionamento entre os submodelos
Sintax : oModel:GetRelation([ cIdForm ])-> aRelation
cIdForm Codigo do submodelo de destino do relacionamento
aRelation Estrutura do relacionamento entre as tabelas.
[1][n][1] IdField do submodelo de destino
Retorno
[2] IdField ou expressão do submodelo de destino
[2] Ordem de relacionamento no padrão ISAM.

1.25 ) SetPrimaryKey
Atribui a PrimaryKey da entidade Modelo. A primarykey é imprescindivel para a correta operação das rotinas
automáticas, web-services, relatórios, etc... Não é necessário informar uma para cada submodelo, a Primary Key é
definida somente para o primeiro submodelo do tipo FormField.
Sintax : oModel:SetPrimaryKey([ aPK ])-> NIL
aPK Array unidimensional com o ID dos campos
Se a tabela do submodelo for um metadado e possuir chave primária informada no SX2,
Observações não é necessário fazer uso desse método pois o MVC irá considerar o que está declarado
no SX2.
1.26 ) GetPrimaryKey
Fornece a Primary Key do modelo de dados
Sintax : oModel:GetPrimaryKey()-> NIL

1.27 ) SetOperation
Indica ao modelo a operacao de manipulacao de dados que será realizada. A classe utiliza esta informação para
definir como serão inicializadas as informações do modelo.
Sintax : oModel:SetOperation([ nOperation ])-> NIL
Indica a operação que será realizada com o modelo, sendo:
[1] View
nOperation [3] Insert
[4] Update
[5] Delete

1.28 ) GetOperation
Fornece o tipo de operacao de manipulacao de dados que foi configurado.
Sintax : oModel:GetOperation()-> nOperation
nOperation Indica a operação que será realizada com o modelo, sendo:
1 - View
3 - Insert
Retorno
4 - Update
5 - Delete
6 - only Update

1.29 ) GetModelIds
Fornece um Array com os ids de Todos os submodelos do Model
Sintax : oModel:GetModelIds()-> aArra
Retorno aArray Array unidimensional que contém os Ids do submodelos

1.30 ) SetActivate
Seta um bloco que será chamado logo após o Activate do model. Esse bloco recebe como parametro o proprio
model(FWFormModel).
Sintax : oModel:SetActivate([ bBloco ])-> NIL
bBloco Code-Block a ser chamado
bBloco := {|oModel| MinhaFunc(oModel)}
Exemplo
oModel:SetActivate(bBloco)

1.31 ) SetDeActivate
Seta um bloco que será chamado logo após o DeActivate do model. Esse bloco recebe como parametro o proprio
model.
Sintax : oModel:SetDeActivate([ bBloco ])-> NIL
bBloco Code-Block a ser chamado
bBloco := {|oModel| MinhaFunc(oModel)}
Exemplo
oModel:SetDeActivate(bBloco)

1.32 ) SetVldActivate
Seta um bloco que será chamado antes do Activate do model. Ele pode Ser utilizado para inibir a inicialização do
model. Se o retorno for negativo uma exceção de usuário será gerada. O code-block recebe como parametro o
objeto model.
Sintax : oModel:SetVldActivate([ bBloco ])-> NIL
bBloco Code-Block a ser chamado
bBloco := {|oModel| MinhaFunc(oModel)}
Exemplo
oModel:SetVldActivate(bBloco)
1.33 ) CanActivate
Verifica se o model pode ser ativado.
Sintax : oModel:CanActivate()-> NIL

1.34 ) SetOptional - Grid


Define que um submodelo é opcional. Quando um modelo é opcional ele tem seu preenchimento não obrigatório,
podendo realizar a gravação dos dados sem preenche-lo
Sintax : oModel:SetOptional([ cIdForm ], [ lOp ])-> NIL
cIdForm Codigo do submodelo
lOp Valor verdadeiro para deixar o submodelo opcional

1.35 ) IsOptional
Retorna se o submodelo é opcional
Sintax : oModel:IsOptional([ cIdForm ])-> lOp
cIdForm Identificador do submodelo
Retorno lOp Se verdadeiro o submodelo é opcional

1.36 ) ClearField
Limpa o conteudo de um campo de um submodelo
Sintax : oModel:ClearField([ cIdForm ], [ cIdField ])-> lRetorno
cIdForm Identificação do submodelo
cIdField Codigo/Nome do atributo da folha de dados
Retorno lRetorno Indica se a operação foi concluida com sucesso

1.37 ) IsActive
Retorna se o modelo está ativo
Sintax : oModel:IsActive()-> NIL

1.38 ) isEnable
Execulta o bloco de bPre do submodelo, retornando se ele está disponivel para edição
Sintax : oModel:isEnable([ cIdForm ])-> lRet
cIdForm Identificador do submodelo que será analisado
Retorno lRet - Se verdadeiro indica que o submodelo está disponivel

1.39 ) HasField
Informa de um determinado campo existe na estrutura
Sintax : oModel:HasField([ cIdForm ], [ cIdField ])-> NIL
cIdForm Identificador do submodelo
cIdField Identificador do campo

1.40 ) SetCancel
Seta um bloco que será chamado quando o submodelo é cancelado
Sintax : oModel:SetCancel([ bBloco ], [ lAcumula ])-> NIL
bBloco Code-Block a ser chamado
Se verdadeiro não substitui o bloco de cancelamento anterior e sim adiciona a validação
lAcumula
no final

1.41 ) SetCommit
Seta um bloco que será chamado na gravação do submodelo
Sintax : oModel:SetCommit([ bBloco ], [ lAcumula ])-> NIL
bBloco Code-Block a ser chamado
lAcumula Se verdadeiro não substitui o bloco anterior e sim adiciona a validação no final
1.42 ) AddLine - Grid
O grid inicia sempre com uma linha. Esse método AddLine deve ser usado para adicionar novas linhas.
Sintax : oModel:AddLine()-> nLine
Retorno nLine Indica a quantidade de linhas do grid
Exemplo oModel:GetModel("ZZ2GRID"):AddLine()

1.43 ) SetLPost
Configura o bloco de código de pós validação da linha do grid. A Pós-validação será realizada na validação do
submodelo no momento da gravação dos dados e durante a inclusão de uma nova linha.
Sintax : oModel:SetLPost(<bLinePost >)-> NIL
bLinePost Bloco de código de pós validação da linha
Exemplo oModel:GetModel("ZZ2GRID"):SetLPost({|oModel| FuncTeste(oModel)})

1.44 ) SetLPre - Grid


Configura o bloco código de pré validação da linha do grid. O bloco será invocado durante qualquer tentativa de
atribuição de valor na linha. O Bloco deve retornar um valor lógico, caso retorne falso a atribuição de valor não será
permitida.
Sintax : oModel:SetLPre(<bLinePre >)-> NIL
bLinePre bloco código de pré validação da linha
Exemplo oModel:GetModel("ZZ2GRID"):SetLPre({|oModel| FuncTeste(oModel)})

1.45 ) SetNoInsertLine - Grid


Especifica que o grid não pode receber inserção de linha
Sintax : oModel:SetNoInsertLine([ lSet ])-> NIL
lSet Especifica se a inserção deve esta ligada .F. ou desligada .T.
Exemplo oModel:GetModel("ZZ2GRID"):SetNoInsertLine(.t.)

1.46 ) SetNoUpdateLine - Grid


Especifica que o grid não pode receber alteração nas linhas
Sintax : oModel:SetNoUpdateLine([ lSet ])-> NIL
lSet Especifica se a alteração deve esta ligada .F. ou desligada .T.
Exemplo oModel:GetModel("ZZ2GRID"):SetNoUpdateLine(.t.)

1.47 ) SetNoDeleteLine - Grid


Especifica que o grid não pode receber exclusão de linha
Sintax : oModel:SetNoDeleteLine([ lSet ])-> NIL
lSet Especifica se a exclusão deve esta ligada .F. ou desligada .T.
Exemplo oModel:GetModel("ZZ2GRID"):SetNoDeleteLine(.t.)

1.48 ) IsDeleted - Grid


Fornece se a linha esta deletada
Sintax : oModel:IsDeleted([ nLine ])-> lDeleted
nLine Indica a linha a ser verificada
Retorno lDeleted Indica se a linha esta deletada
Exemplo oModel:GetModel("ZZ2GRID"):IsDeleted(nLinha)

1.49 ) GoLine - Grid


Altera a linha em que o Grid está posicionado, mesmo se a linha atual estiver invalida
Sintax : oModel:GoLine(<nLine >)-> nLine
nLine Numero da linha do grid que será utilizado como DEFAULT
Retorno nLine Indica a linha atual
Exemplo oModel:GetModel("ZZ2GRID"):GoLine(nLinha)
1.50 ) GetLine - Grid
Fornece a linha do atualmente posicionada no Grid
Sintax : oModel:GetLine()-> nLine
Retorno nLine Indica a linha atual
Exemplo oModel:GetModel("ZZ2GRID"):GetLine()

1.51 ) GetValue
Fornece o valor da folha de dados de um campo do submodelo
Sintax : oModel:GetValue(<cId >, [ nLine ])-> xRetorno
cId Código/Nome do atributo da folha de dados
nLine Numero da linha
Retorno xRetorno Valor do campo
Exemplo oModel:GetModel("ZZ2GRID"):GetValue("ZZ2_VALOR",3)

1.52 ) SetUniqueLine - Grid


Define que determinado(s) campo(s) não pode ser repetido dentro do grid.
Sintax : oModel:SetUniqueLine(<aUnique >, [ bUnique ])-> NIL
aUnique Array unidimensional com os IDs dos campos
Bloco de código de execução quando há linha duplicada. O bloco deve retornar um valor
bUnique
lógico.
Exemplo oModel:GetModel("ZZ2GRID"):SetUniqueLine({'ZZ2_ITEM'})

1.53 ) Length - Grid


Retorna a quantidade de linhas que o grid possui
Sintax : oModel:Length([ lOnlyActive ])-> nMax
lOnlyActive Se for verdadeiro retorna só a quantidade de linhas ativas (não deletadas)
Retorno nMax Quantidade de linhas
Exemplo oModel:GetModel("ZZ2GRID"):Length(.F.)

1.54 ) IsFieldUpdated - Grid


Retorna se um Campo foi atualizado
Sintax : oModel:IsFieldUpdated(<cID >, [ nLine ])-> lRet
cID Código do Field
nLine Numero da Linha
Retorno lRet Indica que o valor foi Atualizado
Exemplo oModel:GetModel("ZZ2GRID"):IsFieldUpdated('ZZ2_VALOR',2)

1.55 ) ClearField - Grid


Limpa o conteúdo de um campo
Sintax : oModel:ClearField(<cId >, [ nLine ], [ lClearTrigger ])-> lAtribuido
cId Codigo/Nome do atributo da folha de dados
nLine Indica a linha
lClearTrigger Indica se limpa os campos gatilhados
Retorno lAtribuido Indica se o campo foi limpo
Exemplo oModel:GetModel("ZZ2GRID"):ClearField('ZZ2_VALOR',2)

1.56 ) SetOnlyQuery - Grid


Define que o submodelo não será gravado, ele é apenas usado para consulta.
Sintax : oModel:SetOnlyQuery([ cIdForm ], [ lOp ])-> NIL
cIdForm Codigo do submodelo
lOp Se verdadeiro faz com que o submodelo não seja gravado.
1.57 ) SetOnlyQuery
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 : oStrucZZ1 := 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( 1, 'ZZ1' , { |x| ALLTRIM(x) $ 'ZA1_MUSICA, ZA1_TITULO' } )

2.1 ) GetTable
Fornece os dados da tabela da estrutura
Sintax : oStrucZZ1:GetTable()-> aRetorno
aRetorno Array com os seguintes dados
[01] ExpC: Alias da tabela
Retorno
[02] ExpA: Array unidimensional com os campos que correspondem a primary key
[03] ExpC: ]Descrição da tabela

2.2 ) GetTable

Você também pode gostar