Histórico da Página
...
Pivot Table | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
|
A classe fornece as opções graficas abaixo:
- Criação de formulário do tipo FormField, onde é possível que o usuário edite um registro por vez
- Criação de formulário do tipo FormGrid, onde é possível que o usuário edite N registros por vez
- Criação de botões
- Divisão da tela em diversos paineis
- Criação de Folder
Static Function ViewDef()
Local oView
Local oStructSA1
//-------------------------------------------------------------------
//Busca o Model da SA1
//-------------------------------------------------------------------
Local oModel := FWLoadModel("MATA010_MVC") //Busca o Model da SA1
//-------------------------------------------------------------------
//Instancia o objeto
//-------------------------------------------------------------------
oView := FWFormView():New()
//-------------------------------------------------------------------
//Faz a carga dos campos do SA1 do dicionario (Apenas Protheus)
//-------------------------------------------------------------------
oStructSA1 := FWFormStruct(2,"SA1")
//-------------------------------------------------------------------
// Set o Model que esse view ira ultilizar
//-------------------------------------------------------------------
oView:SetModel(oModel)
//-------------------------------------------------------------------
//Adiciona um Field(antiga Enchoice)
//-------------------------------------------------------------------
oView:AddField( "MATA010_SA1" , oStructSA1)
//-------------------------------------------------------------------
//Cria um box Horizontal de 100% do Owner
//-------------------------------------------------------------------
oView:CreateHorizontalBox("CABEC",100)
//-------------------------------------------------------------------
//Mapeia a Field("MATA010_SA1") criada no Box("CABEC" criado
//-------------------------------------------------------------------
oView:SetOwnerView( "MATA010_SA1","CABEC")
//-------------------------------------------------------------------
//HAbilita o ControlBar(Antiga EnchoiceBar)
//-------------------------------------------------------------------
oView:EnableControlBar(.T.)
Return oView
Quando utilizamos o FWBrowse na rotina, não é necessário implementar a passagem de Owner, pois é feita
pelo FWBrowse, caso contrário é necessário passar o Owner através do metódo SetOwner.
FWFormModel
MPFormModel
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
oViewOwner | Objeto | Objeto do tipo FWFormView que será o pai da view. Quando uma view possui uma view pai, ela 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. | NIL |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
lValue | Lógico | Se falso desabilita o uso. O padrão da view é manter o curso habilitado. | X |
Se o fonte chama o mvc através do browse esse método não tem
efeito, o cursor será sempre habilitado.
ser usado, pois uma view sempre precisa de um model.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
oObj | Objeto | Objeto do tipo FWFormModel/MPFormModel a se associar a view. | X |
Nesse formulário o usuário poderá editar um registro por vez.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cViewID | Caracteres | ID do formulário. Esse ID será utilizado em diversos momentos na criação da view. | X | ||
oStruct | Objeto | Objeto do tipo FWFormViewStruct a ser usado no formulário | X | ||
cSubModelID | Caracteres | 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 é
necessário passar o terceiro parametro.
Exemplo:
Static Function ModelDef()
Local oModel := MPFormModel():New("MODEL")
Local oStruZA1:= FWFormStruct(1,'ZA1')
oModel:addFields('ZA1MASTER',,oStruZA1)
Return
Static Function ViewDef()
Local oModel := ModelDef()
Local oView := FWFormView():New()
Local oStruZA1:= FWFormStruct(2,'ZA1')
oView:SetModel(oModel)
oView:addField('ZA1MASTER',oStruZA1)
Return
FWFormViewStruct
Função FWFormStruct
Nesse formulário o usuário poderá editar N registros por vez.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cViewID | Caracteres | ID do formulário. Esse ID será utilizado em diversos momentos na criação da view. | X | ||
oStruct | Objeto | Objeto do tipo FWFormViewStruct a ser usado no formulário. | X | ||
cSubModelID | Caracteres | ID do submodelo do tipo FormField do model ao qual o formulário se relaciona. | "" | ||
uParam4 | Qualquer | Compatibilidade. | X | ||
bGotFocus | Bloco de Código | Bloco de código invocado no momento que o grid ganha o foco. O bloco não recebe parametro e nem precisa retornar algum valor. | NIL |
Pode-se usar o mesmo ID do submodelo para o formulário, quando isso é feito não é
necessário passar o terceiro parametro.
Exemplo:
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
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('ZA1MASTER',oStruZA1)
oView:addGrid('ZA2DETAIL',oStruZA2)
Return
FWFormViewStruct
Função FWFormStruct
transformando o grid em tree.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cID | Caracteres | ID do tree. Esse ID será utilizado em diversos momentos na criação da view. | X | ||
aInfos | Array | Array com as informações dos submodelos que devem aparecer no tree, no formato abaixo: [n] array [n][1] ExpC : ID do SubModelo [n][2] ExpA: Array unidimensional com os IDs dos campos que devem aparecer no tree [n][3] ExpO: Objeto do tipo FWFormViewStruct com a Estruturas de Dados | X | ||
cIdDetail | Caracteres | ID do formulário de detalhes dos itens do Tree. | X |
Static Function ViewDef()
Local aTreeInfo:={}
// Cria a estrutura a ser usada na View
Local oStruZA3 := FWFormStruct( 2, 'ZA3' )
Local oStruZA4 := FWFormStruct( 2, 'ZA4' )
Local oStruZA5 := FWFormStruct( 2, 'ZA5' )
// Cria um objeto de Modelo de Dados baseado no ModelDef do fonte informado
Local oModel := FWLoadModel( 'COMP023_MVC' )
Local oView
// Remove campos da estrutura
oStruZA4:RemoveField( 'ZA4_ALBUM' )
oStruZA5:RemoveField( 'ZA5_ALBUM' )
oStruZA5:RemoveField( 'ZA5_MUSICA' )
// 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
oView:AddField( 'VIEW_ZA3', oStruZA3, 'ZA3MASTER' )
// Cria a estrutura das grids em formato de árvore
aAdd( aTreeInfo, { "ZA4DETAIL", { "ZA4_MUSICA", "ZA4_TITULO" }, oStruZA4 } )
aAdd( aTreeInfo, { "ZA5DETAIL", { "ZA5_INTER" } , oStruZA5 } )
oView:AddTreeGrid( "TREE", aTreeInfo, "DETAIL_TREE" )
// Criar "box" horizontal para receber algum elemento da view
oView:CreateHorizontalBox( 'EMCIMA' , 20 )
oView:CreateHorizontalBox( 'EMBAIXO', 80 )
// Criar "box" vertical para receber algum elemento da view
oView:CreateVerticalBox( 'EMBAIXOESQ', 30, 'EMBAIXO' )
oView:CreateVerticalBox( 'EMBAIXODIR', 70, 'EMBAIXO' )
// Relaciona o ID da View com o "box" para exibicao
oView:SetOwnerView( 'VIEW_ZA3' , 'EMCIMA' )
oView:SetOwnerView( 'TREE' , 'EMBAIXOESQ' )
oView:SetOwnerView( 'DETAIL_TREE', 'EMBAIXODIR' )
Return oView
Observação
A Tree disponibilizada em MVC é um componente simples que foi previsto para utilização em apenas um nível.
FWFormViewStruct
Função FWFormStruct
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cFormModelID | Caracteres | Representa o ID | X |
[n]
[n][1] ExpC: Id do formulário
[n][2] ExpC: Id do campo
[n][3] ExpC: Picture
[n][4] ExpA: Array com as opções de ComboBox
[n][5] ExpL :Visual
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cViewID | Caracteres | ID do formulário (definido pelo metodo addField/addGrid/AddTreeGrid). | X | ||
cIDBox | Caracteres | ID do Box que onde será encaixado o componente (definido pelo metodo CreateHorizontalBox/CreateVerticalBox). |
será possível criar as abas da pasta, ele não cria as abas, para cria-las veja
o método AddSheet.
Cria uma Folder num Box especifico, ou Adiciona uma folder ao um FormField existente.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cIDFolder | Caracteres | ID da Folder a ser criada | X | ||
cIDOwner | Caracteres | Id do Owner. Pode ser um box ou um formulário do tipo FormField que ja contenha folders(via 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. | "" | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cIDFolder | Caracteres | ID do folder | X | ||
cIDSheet | Caracteres | ID para a Aba | X | ||
cTitulo | Caracteres | Titulo da Aba | X | ||
bAction | Bloco de Código | Bloco de codigo acionado quando a Aba for selecionada, não recebe nenhum parametro e nem deve retornar valor. | X |
Static Function ViewDef()
Local oModel := ModelDef()
Local oView
Local oStr1:= FWFormStruct(2, 'ZA1')
Local oStr2:= FWFormStruct(2, 'ZA2')
oView := FWFormView():New()
oView:SetModel( oModel )
oView:AddField('ZA1MASTER' , oStr1)
oView:AddGrid('ZA2DETAIL' , oStr2)
oView:CreateHorizontalBox( 'BOX6', 100)
oView:CreateFolder( 'FOLDER7', 'BOX6')
oView:AddSheet('FOLDER7','SHEET9','SHEET9')
oView:CreateHorizontalBox( 'BOXFORM2', 100, , , 'FOLDER7', 'SHEET9')
oView:AddSheet('FOLDER7','SHEET8','SHEET8')
oView:CreateHorizontalBox( 'BOXFORM4', 100, , , 'FOLDER7', 'SHEET8')
oView:SetOwnerView('ZA1MASTER','BOXFORM2')
oView:SetOwnerView('ZA2DETAIL','BOXFORM4')
Return
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
oOwner | Objeto | Objeto do tipo Dialog(tDialog, tWindow, tPanel) que será pai dos objetos graficos. | X | ||
lCloseOnOK | Lógico | Se verdadeiro determina que ao clicar em OK na ControlBar(se ela for usada) ira fechar o Owner. | .F. |
Quando utilizamos o FWBrowse na rotina, não é necessário implementar a passagem de Owner, pois é feita
pelo FWBrowse.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cIDSubModel | Caracteres | ID do submodelo ou então do formulário (somente se os dois forem iguais) | X | ||
cFieldID | Caracteres | ID do campo | X | ||
nLine | Numérico | Número da Linha(caso o submodelo seja um Grid) | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cIDSubModel | Caracteres | ID do submodelo ou então do formulário (somente se os dois forem iguais) | X | ||
cIdField | Caracteres | ID do campo | X |
Esse método deve ser usado quando o componente de view já está inteiramente configurado e o model
relacionado não pode estar ativo.
Cuidado ao usa-lo, pois em loop pode ocorrer perda de peformace.
dos formulários gráficos e dos submodelos e também matando todos os
componentes gráficos.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
nOpe | Numérico | Número da operação, podendo ser: 1 - Visualização 3 - Inserção 4 - Atualização 5 - Exclusão 9 - Cópia | X |
O setOperation vale para todos os Views. Não é possível setar cada Field/Grid em uma operação diferente.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
lSet | Lógico | Se verdadeiro habilita o controlBar. | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
lIsOwnerDlg | Lógico | Se verdadeiro diz que a o owner do view é uma Dialog. | X |
Um box horizontal somente pode ser criado dentro de um box vertical ou então no painel principal da view.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cID | Caracteres | ID do Box a ser utilizado. | X | ||
nPercHeight | Numérico | Valor da Altura do box( caso o lFixPixel seja verdadeiro é a quantidade de pixel exato). | X | ||
cIdOwner | Caracteres | ID do Box Vertical pai. Podemos fazer diversas criações uma dentro da outra. | X | ||
lFixPixel | Lógico | Determina que o valor passado no parametro nPercHeight é na verdade a quantidade de pixel a ser usada. | X | ||
cIDFolder | Caracteres | ID da folder onde queremos criar o box. Esse parametro deve ser passado sempre que o box for criado dentro de uma sheet e, se passado esse valor, é necessário informar o parametro cIDSheet. | NIL | X | |
cIDSheet | Caracteres | ID da Sheet onde queremos criar o box, esse parametro deve ser passado sempre que o box for criado dentro de uma sheet. | X |
Um box vertical somente pode ser criado dentro de um box horizontal.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cID | Caracteres | ID do Box a ser utilizado. | X | ||
nPercHeight | Numérico | Valor da Altura do box( caso o lFixPixel seja verdadeiro é a quantidade de pixel exato). | X | ||
cIdOwner | Caracteres | ID do Box Horizontal pai. Podemos fazer diversas criações uma dentro da outra. | X | ||
lFixPixel | Lógico | Determina que o valor passado no parametro nPercHeight é na verdade a quantidade de pixel a ser usada. | X | ||
cIDFolder | Caracteres | ID da folder onde queremos criar o box. Esse parametro deve ser passado sempre que o box for criado dentro de uma sheet e, se passado esse valor, é necessário informar o parametro cIDSheet. | NIL | X | |
cIDSheet | Caracteres | ID da Sheet onde queremos criar o box, esse parametro deve ser passado sempre que o box for criado dentro de uma sheet. | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cIDView | Caracteres | Id do formulário onde o campo está, necessario ser um FormGrid. | X | ||
cField | Caracteres | Id do Campo que será autoIncremental | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cID | Caracteres | ID do formulário que se deseja recuperar a estrutura. | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cIDSubModel | Caracteres | ID do submodelo ou então do formulário (somente se os dois forem iguais). |
O objetivo é mostrado em diversos operações, tais como web services,
relatórios e schemas (xsd).
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cDescription | Caracteres | Descrição do objetivo da view | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cIDView | Caracteres | ID do formulário (grid) | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cIDView | Caracteres | ID do formulário (grid) | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cIDView | Caracteres | ID do formulário (grid) | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cIDView | Caracteres | ID do formulário (grid) | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cIDView | Caracteres | ID do formulário (grid) | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cIDView | Caracteres | ID do formulário (grid) | X |
pode ser usado para analisar submodelos do tipo formField.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cIDSubModel | Caracteres | ID do submodelo ou então do formulário (somente se os dois forem iguais) | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cTitle | Caracteres | Titulo do Botao | X | ||
cResource | Caracteres | Nome do resource compilado no RPO que será a imagem do botao. | X | ||
bBloco | Bloco de Código | Bloco de codigo que será executado, esse bloco recebe o objeto oView(FWFormView) como parametro. | X | ||
cToolTip | Caracteres | Comentário do botão | CTITLE | ||
nShortCut | Numérico | Codigo da Tecla para criação de Tecla de Atalho | |||
aOptions | Array | Array unidimensional com as operações(MODEL_OPERATION_VIEW,MODEL_OPERATION_INSERT ,MODEL_OPERATION_UPDATE,MODEL_OPERATION_DELETE) que o botao ira ser mostrado, caso o parametro nao seja informado, irá mostrar em todos. | {MODEL_OPERATION_VIEW,MODEL_OPERATION_INSERT ,MODEL_OPERATION_UPDATE,MODEL_OPERATION_DELETE} | ||
lShowBar | Lógico | Indica se o botão deverá aparecer na barra, fora do botão Outras Ações, caso haja espaço. | .F. (falso) |
oView := FWFormView()
bBlocoMagic := {|oView| Myfunction(oView)}
oView:AddUserButton("Texto abaixo do botão","MAGIC_BMP",bBlocoMagic,"Comentário do botão")
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cViewID | Caracteres | ID do formulário. Se o parametro não for passado, o refresh será executado em todos os componentes da view. | '' |
ser fechada após a execução do botão OK. Se o view estiver valido, o
bloco de código é invocado e recebe como parametro o View. O bloco deve
retornar verdadeiro para Fechar a janela ou falso para manter ela aberta.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
bBlock | Bloco de Código | Bloco de Codigo a ser executado | X |
do botão OK. O bloco recebe como parametro o objeto de View e não
precisa retornar nenhum valor.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
bBlock | Bloco de Código | Bloco de Codigo a ser executado. | X |
caso precisamos avaliar, ou questionar o usuario sobre algo.
No momento de chamada desse bloco o Model e o View não estão ativos,
portanto não é possivel recuperar dados.
O bloco recebe como parametro o objeto oView e deve retornar verdadeiro
para permitir a ativação. Se retornar falso a janela será fechada.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
bBlock | Bloco de Código | Bloco de Codigo a ser executado | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cIDView | Caracteres | Id do formulário a ser analisado. | X |
será apenas executado, o retorno dele não será observado.
O bloco de código recebe como parametro o objeto View.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
bBloco | Bloco de Código | Bloco de código a ser chamado. | X |
bBloco := {|oView| MinhaFunc(oView)}
oView:SetAfterViewActivate(bBloco)
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cViewID | Caracteres | ID do painel otherObject | X | ||
bActivate | Bloco de Código | Bloco chamado no Activate do painel. Deve ser usado para criar os componentes do painel. O bloco recebe como parametro o painel onde serão criados os componentes. | |||
bDeActivate | Bloco de Código | Bloco chamado no DeActivate do painel. Deve ser usado para matar os objetos criados no painel. O bloco recebe como parametro o painel onde serão criados os componentes. | |||
bRefresh | Bloco de Código | Bloco chamado no refresh do painel. O bloco recebe como parametro o painel onde estão os componentes. | X |
Static Function ViewDef()
// Cria a estrutura a ser usada na View
Local oStruZA1 := FWFormStruct( 2, 'ZA1' )
Local oModel := FWLoadModel( 'COMP021G_MVC' )
Local oView
Local oGrafPizza
Local oGrafBar
oView := FWFormView():New()
oView:SetModel( oModel )
oView:AddField( 'VIEW_ZA1', oStruZA1, 'ZA1MASTER' )
oView:AddOtherObject("OTHER_PIZZA", {|oPanel| GrafPizza(oPanel)})
oView:CreateHorizontalBox( 'SUPERIOR', 53 )
oView:CreateHorizontalBox( 'INFERIOR', 47)
oView:SetOwnerView( 'VIEW_ZA1', 'SUPERIOR' )
oView:SetOwnerView("OTHER_PIZZA",'INFERIOR')
Return oView
1 - View
3 - Insert
4 - Update
5 - Delete
6 - Only Update
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cViewID | Caracteres | ID do formulário. | X | ||
cTitle | Caracteres | Titulo para o formulário. | OMODEL:GETDESCRIPTION() |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cViewID | Caracteres | ID do formulário. Caso seja passado um * a propriedade será alterada em todos os formulários. Verifique as observações para saber quais propriedades aceitam essa opção. | X | ||
cAction | Caracteres | ID da propriedade. Verifique as observações para visualizar todas as opções disponíveis. | X | ||
aParam | Array | Array com os parametros a serem passado para a propriedade. Verifique as observações para detalhes sobre os parametros em cada item. | X |
Lista de propriedades disponíveis:
--------------------------------------------------------
|
| SETLAYOUT
| Tipo de formulário: FormField
| Descrição: Define o Layout da FormField
| aParam : Deve ser passado um array com a estrutura abaixo:
| [1] ExpN: Tipo de Layout. Use o FWEditPanel.CH e passe
| uma das opções abaixo:
| FF_LAYOUT_VERT_DESCR_TOP - Vertical com descrição acima do get
| LAYOUT_VERT_DESCR_LEFT - Vertical com descrição a esquerda
| FF_LAYOUT_HORZ_DESCR_TOP - Horizontal com descrição acima do get
| FF_LAYOUT_HORZ_DESCR_LEFT - Horizontal com descrição a esquerda
| [2] ExpN: Quantidade de colunas
| [3] ExpN: Largura da coluna
| Exemplo: oView:SetViewProperty( "ZA1MASTER", "SETLAYOUT", { FF_LAYOUT_HORZ_DESCR_TOP , 5 } )
|
--------------------------------------------------------
|
| ENABLEDGRIDDETAIL
| Tipo de formulário: FormGrid
| Descrição: Divide o box do formGrid, criando abaixo do mesmo
| um formulário do tipo formField baseado no grid.
| aParam : Deve ser passado um array com a estrutura abaixo,
| se o array não for passado o percentual padrão é 50%:
| [1] ExpN: Percentual que o detail vai ocupar do box do grid.
| Exemplo: oView:SetViewProperty( 'VIEW_ZA2', "ENABLEDGRIDDETAIL", { 20 } )
|
--------------------------------------------------------
|
| CHANGELINE
| Tipo de formulário: FormGrid
| Descrição: Define um bloco de código que será executado na troca de linha do grid.
| aParam : Deve ser passado um array com a estrutura abaixo:
| [1] ExpB: O bloco recebe como parametro a View e o ID do formulário.
| Exemplo: oView:SetViewProperty( 'VIEW_ZA2', "CHANGELINE", {{ |oView, cViewID| ChangeLine(oView, cViewID) }} )
|
--------------------------------------------------------
|
| SETCOLUMNSEPARATOR
| Tipo de formulário: FormField
| Descrição: Define a distancia entre as colunas.
| aParam : Deve ser passado um array com a estrutura abaixo:
| [1] ExpN: Tamanho da distancia, em pixel
| Exemplo: oView:SetViewProperty("ZA1MASTER", "SETCOLUMNSEPARATOR", {40})
|
--------------------------------------------------------
|
| ONLYVIEW
| Tipo de formulário: FormGrid e FormField
| Aceita o uso de * no ID.
| Descrição: Define que os campos do formulário não permitem edição de dados, são somente para visualização.
| aParam : Não possui, não precisa ser passado.
| Exemplo: oView:SetViewProperty("ZA1MASTER", "ONLYVIEW")
|
--------------------------------------------------------
|
| DISABLELOOKUP
| Tipo de formulário: FormGrid e FormField
| Aceita o uso de * no ID.
| Descrição: Define que a consulta padrão dos campos do formulário será desabilitada.
| aParam : Não possui, não precisa ser passado.
| Exemplo: oView:SetViewProperty("ZA1MASTER", "DISABLELOOKUP")
|
--------------------------------------------------------
|
| ENABLENEWGRID
| Tipo de formulário: FormGrid
| Aceita o uso de * no ID.
| Descrição: Define que o grid deve usar como interface visual o browse (FWBrowse)
| aParam : Não possui, não precisa ser passado.
| Exemplo: oView:SetViewProperty("VIEW_ZA2", "ENABLENEWGRID")
|
--------------------------------------------------------
|
| SIZEMEMO
| Tipo de formulário: FormField
| Descrição: Define um novo tamanho para um campo MEMO
| aParam : Deve ser passado um array com a estrutura abaixo:
| [1] ExpN: Nome do Campo
| [2] Array com tamanho da linha e coluna
| [2][1] ExpN: Tamanho da linha
| [2][2] ExpN: Tamanho da coluna
| Exemplo: oView:SetViewProperty("ZA1MASTER", "SIZEMEMO", {SA1_MEMO , {9, 300}})
|
--------------------------------------------------------
|
| GRIDFILTER
| Tipo de formulário: FormGrid habitado com o ENABLENEWGRID
| Aceita o uso de * no ID.
| Descrição: Define se será exibida ou nao a opcao de filtro no grid.
| aParam : Deve ser passado um array com a estrutura abaixo,
| se o array não for passado, o default é exibir
| o filtro no grid:
| [1] ExpL: Se Verdadeiro habilita, Se falso desabilita
| Exemplo: oView:SetViewProperty("VIEW_ZA2", "GRIDFILTER", {.T.})
|
--------------------------------------------------------
|
| GRIDSEEK
| Tipo de formulário: FormGrid habitado com o ENABLENEWGRID
| Aceita o uso de * no ID.
| Descrição: Define se será exibida ou nao a opcao de pesquisa no grid.
| aParam : Deve ser passado um array com a estrutura abaixo,
| se o array não for passado, o default é exibir
| a pesquisa no grid:
| [1] ExpL: Se Verdadeiro habilita, Se falso desabilita
| Exemplo: oView:SetViewProperty("VIEW_ZA2", "GRIDSEEK", {.T.})
|
--------------------------------------------------------
|
| GRIDROWHEIGHT
| Tipo de formulário: FormGrid habitado com o ENABLENEWGRID
| Aceita o uso de * no ID.
| Descrição: Define a altura da linha do grid.
| aParam : Deve ser passado um array com a estrutura abaixo:
| [1] ExpN: Altura da linha
| Exemplo: oView:SetViewProperty("VIEW_ZA2", "GRIDROWHEIGHT", {40})
|
--------------------------------------------------------
|
| GRIDVSCROLL
| Tipo de formulário: FormGrid habitado com o ENABLENEWGRID
| Aceita o uso de * no ID.
| Descrição: Define se será exibida ou nao o scroll vertical do grid
| aParam : Deve ser passado um array com a estrutura abaixo,
| se o array não for passado, o default é exibir
| o scroll no grid:
| [1] ExpL: Se Verdadeiro exibe, Se falso não exibe
| Exemplo: oView:SetViewProperty("VIEW_ZA2", "GRIDVSCROLL", {.F.})
|
--------------------------------------------------------
|
| GRIDCANGOTFOCUS
| Tipo de formulário: FormGrid habitado com o ENABLENEWGRID
| Aceita o uso de * no ID.
| Descrição: Define se grid pode receber foco.
| aParam : Deve ser passado um array com a estrutura abaixo,
| se o array não for passado, o default é permitir
| o foco no grid:
| [1] ExpL: Se Verdadeiro habilita, Se falso desabilita
| Exemplo: oView:SetViewProperty("VIEW_ZA2", "GRIDCANGOTFOCUS", {.F.})
|
--------------------------------------------------------
|
| SETCSS
| Tipo de formulário: FormGrid habitado com o ENABLENEWGRID
| Aceita o uso de * no ID.
| Descrição: Define um CSS para o grid.
| aParam : Deve ser passado um array com a estrutura abaixo:
| [1] ExpC: CSS para o componente
| Exemplo: oView:SetViewProperty("VIEW_ZA2", "SETCSS", {cCSS})
|
--------------------------------------------------------
--------------------------------------------------------
|
| GRIDDOUBLECLICK
| Tipo de formulário: FormGrid habitado com o ENABLENEWGRID
| Aceita o uso de * no ID.
| Descrição: Define uma acao no duplo clique do formulario
| aParam : Deve ser passado um array com a estrutura abaixo,
| se o array não for passado
| [1] ExpB: Bloco de codigo a ser executado da acao
| do clie
| Exemplo: oView:SetViewProperty("VIEW_ZA2", "GRIDDOUBLECLICK", {{|oFormulario,cFieldName,nLineGrid,nLineModel| MyDoubleClick(oFormulario,cFieldName,nLineGrid,nLineModel)}})
| Obs: A funcao vai receber 4 parametros:
| oFormulario - Objeto do Tipo FWFormGrid
| cFieldName - Nome do campo do model
| nLineGrid - Linha do selecionada do Grid, pode não corresponder a do modelo, caso o mesmo
| esteja filtrado
| nLineModel - Linha Correspondente no Model
| A funcao deve retornar .T. para executar a edicao de celular o .F. caso não queira editar
--------------------------------------------------------
|
| SETCSSTITLE
| Tipo de formulário: FormGrid habitado com o ENABLENEWGRID
| Aceita o uso de * no ID.
| Descrição: Define um CSS para o titulo.
| aParam : Deve ser passado um array com a estrutura abaixo:
| [1] ExpC: CSS para o componente
| Exemplo: oView:SetViewProperty("VIEW_ZA2", "SETCSS", {cCSS})
|
--------------------------------------------------------
|
| GRIDNOORDER
| Tipo de formulário: FormGrid habitado com o ENABLENEWGRID
| Aceita o uso de * no ID.
| Descrição: Define se não quer permitir a ordenação do grid
| aParam : Deve ser passado o ID da propriedade no 2º parametro da SetViewProperty
| Exemplo: oView:SetViewProperty( "*", "GRIDNOORDER")
|
--------------------------------------------------------
--------------------------------------------------------
|
| SETGRIDLINES
| Tipo de formulário: FormGrid habitado com o ENABLENEWGRID
| Aceita o uso de * no ID.
| Descrição: Define quantas linhas do formulário serão visíveis
| aParam : Deve ser passado o número de linhas, o lContinuousForm é incluído automaticamente
| Exemplo: oView:SetViewProperty('FORM_ZL4', 'SETGRIDLINES', {20})
|
--------------------------------------------------------
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cViewID | Caracteres | ID do formulário. | X | ||
cFieldID | Caracteres | ID do campo a se alterar. | X | ||
cAction | Caracteres | ID da propriedade. Verifique as observações para maiores detalhes. | X | ||
aparam | Array | com os parametros a serem passado para a propriedade. Verifique as observações para detalhes sobre os parametros em cada item. | X |
Lista de propriedades disponíveis:
--------------------------------------------------------
|
| COMBOVALUES
| Descrição: Altera as opções de combo do campo.
| aParam : Deve ser passado um array unidimensional com os novos valores.
| Exemplo: oView:SetFieldProperty("ZA1MASTER","BUTTON_0","COMBOVALUES",{aValues})
|
--------------------------------------------------------
Esse método difere do setviewproperty "ONLYVIEW", pois o setviewproperty
realiza a alteração apenas no formulário, deixando o submodelo ainda editavel.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cIDView | Caracteres | ID do formulário | X |
serão movidos para a linha destino e os dados da linha destino serão
movidos para a linha origem.
Se a linha atualmente posicionada é a origem ou o destino, o número
da linha posicionada irá ser mudado para o numero da origem ou do
destino, porque os dados são trocados porém a linha ainda precisa
ser validada.
O método somente pode ser usado para formulários do tipo grid.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cIDView | Caracteres | ID do formulário do grid. | X | ||
nLineFrom | Numérico | Numero da linha de origem | ::GETLINE(CIDVIEW) | ||
nLineTo | Numérico | Numero da linha de destino | ::GETLINE(CIDVIEW) |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cActionlID | Caracteres | ID do ponto a acao sera executada que podem ser REFRESH - Executa a ação no Refresh da View BUTTONOK - Executa a ação no acionamento do botão confirmar da View BUTTONCANCEL - Executa a ação no acionamento do botão cancelar da View DELETELINE - Executa a ação na deleção da linha da grid UNDELETELINE - Executa a ação na restauração da linha da grid | X | ||
bAction | Bloco de Código | Bloco com a acao a ser executada. Recebe como parametro: REFRESH - Recebe como parameto o objeto de View BUTTONOK - Recebe como parameto o objeto de View BUTTONCANCEL - Recebe como parameto o objeto de View DELETELINE - Recebe como parameto o objeto de View, Id do Submodelo e Numero da linha UNDELETELINE - Recebe como parameto o objeto de View, Id do Submodelo e Numero da linha | X |
oView:SetViewAction( 'BUTTONOK' , { |oView| SuaFuncao( oView ) } )
oView:SetViewAction( 'BUTTONCANCEL', { |oView| OutraFuncao( oView ) } )
oView:SetViewAction( 'DELETELINE', { |oView,cIdView,nNumLine| OutraFuncao( oView,cIdView,nNumLine ) } )
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.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cIDField | Caracteres | ID campo, pode ser um campo de qualquer formulário da view. | X | ||
bAction | Bloco de Código | Bloco com a acao a ser executada. Recebe como parametro o objeto de View, o ID do formulário, o ID do campo e o conteudo do campo. | X |
oView:SetFieldAction( 'A1_COD', { |oView, cIDView, cField, xValue| SuaFuncao( oView, cIDView, cField, xValue ) } )
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cIDView | Caracteres | Id do formulário | X | ||
cIdField | Caracteres | Id do campo | X |
If oView:HasField( "VIEW_SA1", "A1_COD" )
...
EndIf
[1] ExpC: ID do formulário
[2] ExpC: ID do campo
No View existem dois tipos de pastas, as pastas criadas no view através
do método createFolder e as pastas provenientes da estrutura de dados que
existem dentro de um formulário do tipo FormField.
O método analisa os dois tipos de pastas, de acordo com o valor informado
no segundo parametro.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cID | Caracteres | ID do formulário do tipo FormField ou ID da Folder | X | ||
nType | Numérico | Tipo de Folder [ 1 - Estrutura de Dados(FormField) | 2 - View(Método CreateFolder) ] | X |
[1] ExpN: Número da aba
[2] ExpC: Título da aba
Static Function ModelDef()
Local oModel
Local oStr1:= FWFormStruct(1,'SA1')
oModel := MPFormModel():New('MODEL')
oModel:SetDescription('teste')
oModel:addFields('FIELD1',,oStr1)
Return oModel
Static Function ViewDef()
Local oView
Local oModel := ModelDef()
Local oStr1:= FWFormStruct(2, 'SA1')
oView := FWFormView():New()
oView:SetModel(oModel)
oView:AddField('FORM1' , oStr1,'FIELD1' )
oView:AddOtherObject('FORM8',{|| },{|| })
oView:AddOtherObject('FORM10',{|| },{|| })
oView:CreateHorizontalBox( 'BOXFORM1', 50)
oView:CreateHorizontalBox( 'BOX3', 50)
oView:CreateFolder( 'FOLDER', 'BOX3')
oView:AddSheet('FOLDER','ABA1','Aba 1')
oView:AddSheet('FOLDER','ABA2','Aba 2')
oView:CreateHorizontalBox( 'BOXFORM10', 100, , , 'FOLDER', 'ABA2')
oView:CreateHorizontalBox( 'BOXFORM8', 100, , , 'FOLDER', 'ABA1')
oView:SetOwnerView('FORM1','BOXFORM1')
oView:SetOwnerView('FORM8','BOXFORM8')
oView:SetOwnerView('FORM10','BOXFORM10')
oView:AddUserButton( 'Select Folder Estrutura de Dados', 'TESTE FOLDER', {|oView| Folder1(oView) } )
oView:AddUserButton( 'Select Folder View' , 'TESTE FOLDER', {|oView| Folder2(oView) } )
oView:AddUserButton( 'Get Folders Active', 'TESTE FOLDER', {|oView| Folder3(oView) } )
Return oView
Static Function Folder1(oView)
oView:SelectFolder("FORM1",4,1)
Return
Static Function Folder2(oView)
oView:SelectFolder("FOLDER","Aba 1",2)
Return
Static Function Folder3(oView)
Local aInfo
aInfo := oView:GetFolderActive("FORM1", 1)
Alert( "FORM1 - Aba Ativa: " + aInfo[2] )
aInfo := oView:GetFolderActive("FOLDER", 2)
Alert( "FOLDER - Aba Ativa: " + aInfo[2] )
Return
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.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cID | Caracteres | ID do formulário do tipo FormField ou ID da Folder | X | ||
xFolder | Qualquer | Número da Aba ou Título dela | X | ||
nType | Numérico | Tipo de Folder [ 1 - Estrutura de Dados(FormField) | 2 - View(Método CreateFolder) ] | X |
Static Function ModelDef()
Local oModel
Local oStr1:= FWFormStruct(1,'SA1')
oModel := MPFormModel():New('MODEL')
oModel:SetDescription('teste')
oModel:addFields('FIELD1',,oStr1)
Return oModel
Static Function ViewDef()
Local oView
Local oModel := ModelDef()
Local oStr1:= FWFormStruct(2, 'SA1')
oView := FWFormView():New()
oView:SetModel(oModel)
oView:AddField('FORM1' , oStr1,'FIELD1' )
oView:AddOtherObject('FORM8',{|| },{|| })
oView:AddOtherObject('FORM10',{|| },{|| })
oView:CreateHorizontalBox( 'BOXFORM1', 50)
oView:CreateHorizontalBox( 'BOX3', 50)
oView:CreateFolder( 'FOLDER', 'BOX3')
oView:AddSheet('FOLDER','ABA1','Aba 1')
oView:AddSheet('FOLDER','ABA2','Aba 2')
oView:CreateHorizontalBox( 'BOXFORM10', 100, , , 'FOLDER', 'ABA2')
oView:CreateHorizontalBox( 'BOXFORM8', 100, , , 'FOLDER', 'ABA1')
oView:SetOwnerView('FORM1','BOXFORM1')
oView:SetOwnerView('FORM8','BOXFORM8')
oView:SetOwnerView('FORM10','BOXFORM10')
oView:AddUserButton( 'Select Folder Estrutura de Dados', 'TESTE FOLDER', {|oView| Folder1(oView) } )
oView:AddUserButton( 'Select Folder View' , 'TESTE FOLDER', {|oView| Folder2(oView) } )
oView:AddUserButton( 'Get Folders Active', 'TESTE FOLDER', {|oView| Folder3(oView) } )
Return oView
Static Function Folder1(oView)
oView:SelectFolder("FORM1",4,1)
Return
Static Function Folder2(oView)
oView:SelectFolder("FOLDER","Aba 1",2)
Return
Static Function Folder3(oView)
Local aInfo
aInfo := oView:GetFolderActive("FORM1", 1)
Alert( "FORM1 - Aba Ativa: " + aInfo[2] )
aInfo := oView:GetFolderActive("FOLDER", 2)
Alert( "FOLDER - Aba Ativa: " + aInfo[2] )
Return
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.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cID | Caracteres | ID do formulário do tipo FormField ou ID da Folder | X | ||
xFolder | Qualquer | Número da Aba ou Título dela | X | ||
nType | Numérico | Tipo de Folder [ 1 - Estrutura de Dados(FormField) | 2 - View(Método CreateFolder) ] | X |
Static Function ModelDef()
Local oModel
Local oStr1:= FWFormStruct(1,'SA1')
oModel := MPFormModel():New('MODEL')
oModel:SetDescription('teste')
oModel:addFields('FIELD1',,oStr1)
Return oModel
Static Function ViewDef()
Local oView
Local oModel := ModelDef()
Local oStr1:= FWFormStruct(2, 'SA1')
oView := FWFormView():New()
oView:SetModel(oModel)
oView:AddField('FORM1' , oStr1,'FIELD1' )
oView:AddOtherObject('FORM8',{|| },{|| })
oView:AddOtherObject('FORM10',{|| },{|| })
oView:CreateHorizontalBox( 'BOXFORM1', 50)
oView:CreateHorizontalBox( 'BOX3', 50)
oView:CreateFolder( 'FOLDER', 'BOX3')
oView:AddSheet('FOLDER','ABA1','Aba 1')
oView:AddSheet('FOLDER','ABA2','Aba 2')
oView:CreateHorizontalBox( 'BOXFORM10', 100, , , 'FOLDER', 'ABA2')
oView:CreateHorizontalBox( 'BOXFORM8', 100, , , 'FOLDER', 'ABA1')
oView:SetOwnerView('FORM1','BOXFORM1')
oView:SetOwnerView('FORM8','BOXFORM8')
oView:SetOwnerView('FORM10','BOXFORM10')
oView:AddUserButton( 'Hide Folder', 'TESTE FOLDER', {|oView| HideFolder(oView) } )
Return oView
Static Function HideFolder(oView)
oView:HideFolder("FOLDER","Aba 1",2)
oView:HideFolder("FORM1",1,1)
Return
utilizar em rotina onde a carga pode demorar muito.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
lValue | Lógico | Se verdadeiro, habilita o uso. | X |
dos dados dos formulário.s
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
nInterval | Numérico | Indica o intervalo, em milissegundos , para disparar o bloco de código do Timer. | X | ||
bAction | Bloco de Código | Indica o bloco de código que será executado a cada intervalo definido. | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
lHtm | Lógico | Indica se o layout deve ser gerado como HTML | .F. | ||
lEmbeded | Lógico | Indica se o javascript e css serao embutidos no layout | X | ||
lDocType | Lógico | Indica se gera o HTML com a tag DOCTYPE (enviar falso para o ECM) | .T. | ||
cInitJs | Caracteres | Javascript que deve ser executado no load do HTML | "" | ||
cDirCss | Caracteres | Indica o diretorio do css para inserir no HTML | "" | ||
cDirJs | Caracteres | Indica o diretorio do javascript para inserir no HTML | "" | ||
lImgEmbedded | Lógico | Indica se as imagens do css serao embutidos | .T. | ||
lLoad | Lógico | Indica se cria os inputs com os valores do model | .F. | ||
lLookUp | Lógico | Indica se cria opção de lookup | .F. |
O método somente pode ser chamado depois do deactivate.
Só é necessário o uso desse método se o view foi instanciado na mão,
se o view é usado com FWExecView ou então com o Browse o método destroy
é chamado internamente.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
bVldFolder | Bloco de Código | Bloco a ser executado quando uma aba é selecionada, deve retornar um booleano. Caso o bloco retorne falso, não será alterada a aba que está selecionada. O bloco irá receber 3 parâmetros: cFolderID : ID do folder(quando for criado pelo desenvolvedor através do método AddFolder) ou ID formulário do tipo Formfield(quando a pasta for proveniente da estrutura de dados) nOldSheet : Sheet que estava selecionada nSelSheet : Sheet que o usuário clicou | X |
Static Function ModelDef()
Local oModel
Local oStr1:= FWFormStruct(1,'SA1')
oModel := MPFormModel():New('MODEL')
oModel:SetDescription('teste')
oModel:addFields('FIELD1',,oStr1)
Return oModel
Static Function ViewDef()
Local oView
Local oModel := ModelDef()
Local oStr1:= FWFormStruct(2, 'SA1')
oView := FWFormView():New()
oView:SetModel(oModel)
oView:AddField('FORM1' , oStr1,'FIELD1' )
oView:AddOtherObject('FORM8',{|| },{|| })
oView:AddOtherObject('FORM10',{|| },{|| })
oView:CreateHorizontalBox( 'BOXFORM1', 50)
oView:CreateHorizontalBox( 'BOX3', 50)
oView:CreateFolder( 'FOLDER', 'BOX3')
oView:AddSheet('FOLDER','ABA1','Aba 1')
oView:AddSheet('FOLDER','ABA2','Aba 2')
oView:CreateHorizontalBox( 'BOXFORM10', 100, , , 'FOLDER', 'ABA2')
oView:CreateHorizontalBox( 'BOXFORM8', 100, , , 'FOLDER', 'ABA1')
oView:SetOwnerView('FORM1','BOXFORM1')
oView:SetOwnerView('FORM8','BOXFORM8')
oView:SetOwnerView('FORM10','BOXFORM10')
oView:SetVldFolder({|cFolderID, nOldSheet, nSelSheet| VldFolder(cFolderID, nOldSheet, nSelSheet)})
Return oView
Static Function VldFolder(cFolderID, nOldSheet, nSelSheet)
Local lRet := .T.
If nOldSheet == 1 .And. nSelSheet == 2
Help( ,, 'Help',, 'Não é permitido selecionar a aba 2 se você estiver na aba 1.', 1, 0 )
lRet := .F.
EndIf
Return lRet
o scroll é geral e não especifico em cada formulário, simulando o
comportamento de uma página.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
lContinuous | Lógico | Se verdadeiro, a view é continua. | .T. |
de atualização for concluida. Pode-se usar #nomeDoCampo caso seja
necessario mostrar na mensagem alguma informação do registro que foi
atualizado.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cTitle | Caracteres | Título da mensagem | X | ||
cDesc | Caracteres | Descricao da mensagem | X |
de inclusão for concluida. Pode-se usar #nomeDoCampo caso seja
necessario mostrar na mensagem alguma informação do registro que foi
incluido.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cTitle | Caracteres | Título da mensagem | X | ||
cDesc | Caracteres | Descricao da mensagem | X |
de exclusão for acionada. Pode-se usar #nomeDoCampo caso seja
necessario mostrar na mensagem alguma informação do registro.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cTitle | Caracteres | Título da mensagem | X | ||
cDesc | Caracteres | Descricao da mensagem | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
lUpdateMsg | Lógico | Variavel que define se a mensagem será exibida (.T.) ou não (.F.) | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
lInsertMsg | Lógico | Variavel que define se a mensagem será exibida (.T.) ou não (.F.) | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cIdView | Caracteres | ID da View | X |
Parâmetros
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cField | Caracteres | Campo do struct | X |
CopyLine
Sintaxe
FWFORMVIEW():CopyLine()-> NIL
Descrição
Executa a cópia de uma linha.
Exemplo
static function copyline(oModel,oView)
Local oModelZA2 := oModel:GetModel( 'ZA2DETAIL' )
oModelZA2:CopyLine(,oView)
//oView:copyline(1)
Return