|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
Filtro FWmBrowse com tabela temporária |
|
Versão: |
12.1.33 |
|
Plataforma: |
Microsoft |
Complemento: |
|
|
DB: |
SQL Server |
Complemento: |
|
|
|
|
|
Mensagem do
LUSILVEI
em 27/06/2022, 14:14 h
Local: SP Registro: 08/09/2011 Postagens: 3 |
Boa Tarde,
Criei uma tela utilizando FWmBrowse baseado em uma tabela temporária. Nesta tela, criei um botão para filtrar por dois campos que se encontram em tabelas distintas mas que já fazem parte do meu modelo, dados que tenho uma query que relaciona as tabelas.
Ao filtrar pelo item preenchido e clicar no botão alterar no registro desejado o sistema não considera o registro o browse atual e acaba editando o registro que está no browse anterior.
Além disso estou com um erro al clicar no botão Confirmar da tela que criei. Aparece que o alias da tabela temporária não existe.
Já olhei tanto para esse código tentando resolver que não consigo mais avançar.
Alguém conseguiria me ajudar?
Segue as duas funções criadas:
#INCLUDE ‘PROTHEUS.CH‘
#INCLUDE "TOTVS.CH"
#INCLUDE ‘FWMVCDEF.CH‘
#INCLUDE "RWMAKE.CH"
#INCLUDE ‘FWMBROWSE.CH‘
//-------------------------------------------------------------------
/*/{Protheus.doc} F070CAP
Exemplo de montagem da modelo e interface para uma estrutura
pai/filho em MVC
@author Luciana Silveira
@since 09/02/2022
@version P12
/*/
//-------------------------------------------------------------------
User Function F070CAP()
Local aArea := GetArea()
Local oBrowse := FwLoadBrw("F070CAP")
oBrowse:Activate()
If "X" == "Y" // Apenas para retirar os warnings de compilação
BrowseDef()
MenuDef()
ModelDef()
ViewDef()
EndIf
RestArea(aArea)
Return
Static Function BrowseDef()
Local oBrowse := FWMBrowse():New()
Local aColumns := {}
Private cFilter:= ‘‘
oBrowse:SetColumns( aColumns )
oBrowse:SetAlias( "ZYA" )
oBrowse:SetDescription("Casos de CAP")
oBrowse:SetProfileID( ‘1‘ )
Return oBrowse
Static Function MenuDef()
Local aRotina := {}
ADD OPTION aRotina Title ‘Incluir‘ Action ‘VIEWDEF.F070CAP‘ OPERATION 3 ACCESS 0
ADD OPTION aRotina Title ‘Alterar‘ Action ‘VIEWDEF.F070CAP‘ OPERATION 4 ACCESS 0
ADD OPTION aRotina Title ‘Filtros‘ Action ‘U_F070FILT()‘ OPERATION 4 ACCESS 0
ADD OPTION aRotina Title ‘Visualizar‘ Action ‘VIEWDEF.F070CAP‘ OPERATION 2 ACCESS 0
ADD OPTION aRotina Title ‘Excluir‘ Action ‘VIEWDEF.F070CAP‘ OPERATION 5 ACCESS 0
Return aRotina
//-------------------------------------------------------------------
Static Function ModelDef()
// Cria a estrutura a ser usada no Modelo de Dados
Local bVldPos := {|| U_F70VALCAP()} //Validação se já existe CAP para o caso ao clicar no Confirmar
Local oModel := MPFormModel():New(‘COMP0CAP‘, /*bPreValidacao*/, bVldPos, /*bCommit*/, /*bCancel*/ )
Local oStruZYA := FWFormStruct( 1, ‘ZYA‘, /*bAvalCampo*/, /*lViewUsado*/ )
Local oStruZYB := FWFormStruct( 1, ‘ZYB‘, /*bAvalCampo*/, /*lViewUsado*/ )
// Cria o objeto do Modelo de Dados
//oModel := MPFormModel():New( ‘COMP0CAP‘, /*bPreValidacao*/, bVldPos, /*bCommit*/, /*bCancel*/ )
// Adiciona ao modelo uma estrutura de formulário de edição por campo
oModel:AddFields( ‘ZYAMASTER‘, /*cOwner*/, oStruZYA )
// Adiciona ao modelo uma estrutura de formulário de edição por grid
oModel:AddGrid( ‘ZYBDETAIL‘, ‘ZYAMASTER‘ , oStruZYB, /*bLinePre*/, /*bLinePost*/, /*bPreVal*/, /*bPosVal*/, /*BLoad*/ )
// Faz relaciomaneto entre os compomentes do model
oModel:SetRelation( ‘ZYBDETAIL‘, { { ‘ZYB_CODCAP‘, ‘ZYA_COD‘ } }, ZYB->( IndexKey( 1 ) ) )
/*
//Agora fazendo o filtro na grid, conforme data inicial e final fornecida pelo usuário em um ParamBox / Pergunte
oModel:GetModel(‘ZZEDETAIL‘):SetLoadFilter(, "ZYA BETWEEN ‘" + dToS(dDataIni) + "‘ AND ‘" + dToS(dDataFin) + "‘ " )
*/
// Liga o controle de nao repeticao de linha
oModel:GetModel( ‘ZYBDETAIL‘ ):SetUniqueLine( { ‘ZYB_COD‘ } )
// Adiciona a descricao do Modelo de Dados
oModel:SetDescription( ‘Modelo de CAP‘ )
//Define a chave primaria utilizada pelo modelo
oModel:SetPrimaryKey({‘ZYA_FILIAL‘, ‘ZYA_COD‘})
// Adiciona a descricao do Componente do Modelo de Dados
oModel:GetModel( ‘ZYAMASTER‘ ):SetDescription( ‘Cadastro de CAP‘ )
oModel:GetModel( ‘ZYBDETAIL‘ ):SetDescription( ‘Casos CAP‘ )
Return oModel
//-------------------------------------------------------------------
Static Function ViewDef()
// Cria um objeto de Modelo de Dados baseado no ModelDef do fonte informado
Local oStruZYA := FWFormStruct( 2, ‘ZYA‘ )
Local oStruZYB := FWFormStruct( 2, ‘ZYB‘ )
Local oModel := FWLoadModel( ‘F070CAP‘ )
Local oView
Private lRet := .T.
// Cria o objeto de View
oView := FWFormView():New()
// Define qual o Modelo de dados será utilizado
oView:SetModel( oModel )
//Adiciona no nosso View um controle do tipo FormFields(antiga enchoice)
oView:AddField( ‘VIEW_ZYA‘, oStruZYA, ‘ZYAMASTER‘ )
//Adiciona no nosso View um controle do tipo FormGrid(antiga newgetdados)
oView:AddGrid( ‘VIEW_ZYB‘, oStruZYB, ‘ZYBDETAIL‘ )
// Criar um "box" horizontal para receber algum elemento da view
oView:CreateHorizontalBox( ‘SUPERIOR‘, 60 )
oView:CreateHorizontalBox( ‘INFERIOR‘, 40 )
// Relaciona o ID da View com o "box" para exibicao
oView:SetOwnerView( ‘VIEW_ZYA‘, ‘SUPERIOR‘ )
oView:SetOwnerView( ‘VIEW_ZYB‘, ‘INFERIOR‘ )
// Define campos que terao Auto Incremento
oView:AddIncrementField( ‘VIEW_ZYB‘, ‘ZYB_COD‘ )
// Liga a identificacao do componente
oView:EnableTitleView(‘VIEW_ZYB‘,‘Casos CAP‘)
Return oView
//FUNÇÃO PARA VALIDAR SE JÁ EXISTE CAP ATIVO PARA O CASO INFORMADO
User Function F70VALCAP()
Local cCap := ‘‘
Local cCAPAtu := ‘‘
Local cStatus := ‘‘
Local nCount := 0
Local lRet := .T.
Local oModelCap := FWModelActive()
Local nOperation := oModelCap:GetOperation()
Local cQuery := ‘‘
//Local aAreaCap := GetArea()
cStatus := oModelCap:GetValue(‘ZYAMASTER‘,‘ZYA_STATUS‘)
If (nOperation == MODEL_OPERATION_INSERT .OR. nOperation == MODEL_OPERATION_UPDATE ) .AND. cStatus == ‘1‘
cCaso := oModelCap:GetValue(‘ZYBDETAIL‘,‘ZYB_CCASO‘ )
cQuery := "SELECT ZYA_COD, ZYA_STATUS, ZYB_CCASO, ZYB.R_E_C_N_O_ "
cQuery += " FROM " + RetSqlName("ZYA") + " ZYA "
cQuery += " INNER JOIN " + RetSqlName("ZYB") + " ZYB ON ZYA_COD = ZYB_CODCAP AND ZYB.D_E_L_E_T_ = ‘‘ "
cQuery += " WHERE ZYA.D_E_L_E_T_ = ‘‘ AND ZYA_STATUS = ‘1‘ AND ZYB_CCASO = ‘" + cCaso + "‘"
cQuery := ChangeQuery( cQuery )
If Select( "QRYCAP" ) > 0
QRYCAP->( dbCloseArea() )
Endif
DbUseArea(.T., "TOPCONN", TcGenQry( , , cQuery ), "QRYCAP", .T., .T.)
QRYCAP->( dbGoTop() )
QRYCAP->( dbEval( { || nCount++ } ) )
QRYCAP->( dbGoTop() )
cCap := QRYCAP->ZYA_COD
cCAPAtu := M->ZYA_COD
If nCount >= 1 .AND. QRYCAP->ZYA_COD <> cCAPAtu
/* ZYB->(RecLock("ZYB",.F.))
ZYB->(DbDelete())
ZYB->(MsUnLock())
*/
If nOperation == MODEL_OPERATION_INSERT
Help( ,, ‘CAP já cadastrado‘,, "O Caso informado encontra-se ativo no CAP " + cCap, 1, 0 )
lRet := .F.
//oModelCap:SetInsertMessage(‘CAP já cadastrado‘, "O Caso informado encontra-se ativo no CAP " + cCap )
Else
//Personaliza as mensagens ao inserir, atualizar e deletar registros
Help( ,, ‘CAP já cadastrado‘,, "O Caso informado encontra-se ativo no CAP " + cCap, 1, 0 )
lRet := .F.
//oModelCap:SetUpdateMessage(‘CAP já cadastrado‘, "O Caso informado encontra-se ativo no CAP " + cCap )
Endif
Endif
// RestArea(aAreaCap)
Endif
Return lRet
//Valida se o caso informado pertence ao Grupo da ZYAMASTER
User Function F070CASO(cCaso, cGrupo)
Local lRet := .T.
DbSelectArea("NVE")
DbSetOrder(3)
If NVE->( dbSeek( XFilial("NVE") + cCaso ) )
If NVE->NVE_CGRPCL <> cGrupo
lRet := .F.
Help(NIL, NIL, "Caso Incorreto", NIL, "O Caso informado não confere com o Grupo escolhido", 1, 0, NIL, NIL, NIL, NIL, NIL, {"Preencha ou selecione o caso correto para prosseguir"})
Endif
Endif
Return lRet
User Function F70SIGSOC(cCaso)
Local cPart := ‘‘
Local cSoc := ‘‘
IF !INCLUI
DbSelectArea(‘NVE‘)
DbSetOrder(3)
If NVE->( dbSeek( XFilial(‘NVE‘) + cCaso + ‘1‘ ) )
cPart := NVE->NVE_CPART1
cSoc := IIF(!EMPTY(cCaso),POSICIONE(‘RD0‘,1,XFILIAL(‘RD0‘)+cPart,‘RD0_SIGLA‘),‘‘)
Endif
Endif
Return cSoc
User Function F70SIGEXE(cCaso)
Local cPart2 := ‘‘
Local cExe := ‘‘
IF !INCLUI
DbSelectArea(‘NVE‘)
DbSetOrder(3)
If NVE->( dbSeek( XFilial(‘NVE‘) + cCaso +"1" ) )
cPart2 := NVE->NVE_CPART2
cExe := IIF(!EMPTY(cCaso),POSICIONE(‘RD0‘,1,XFILIAL(‘RD0‘)+cPart2,‘RD0_SIGLA‘),‘‘)
Endif
Endif
Return cExe
//-------------------------------------------------------------------
/*/{Protheus.doc} F070FILT
Filtros por Caso e Redator
@author Luciana Silveira
@since 28/04/2022
@version P12
/*/
//-------------------------------------------------------------------
User Function F070FILT()
Local oDlg
Local cCaso := space(TamSX3(‘NVE_NUMCAS‘)[1])
Local cRed := space(TamSX3(‘ZB1_CODIGO‘)[1])
DEFINE MSDIALOG oDlg TITLE "Filtros" FROM 0,0 TO 200,350 PIXEL //"Filtrosî"
@ 005,005 Say "Filtrar por:" Size 030,015 PIXEL OF oDlg
@ 021,010 Say "Caso:" Size 030,015 PIXEL OF oDlg
@ 021,030 MSGET cCaso PICTURE "@!" F3 "NVE" SIZE 40,06 OF oDlg PIXEL
@ 021,090 Say "Faturista:" Size 030,015 PIXEL OF oDlg
@ 021,120 MSGET cRed PICTURE "@!" F3 "ZB1" SIZE 40,06 OF oDlg PIXEL
@ 050, 070 Button ‘Confirmar‘ Size 037, 012 Of oDlg Action U_F070BRW(cCaso, cRed) PIXEL
@ 050, 120 Button ‘Sair‘ Size 037, 012 Pixel Of oDlg Action oDlg:End()
ACTIVATE MSDIALOG oDlg CENTERED
Return (cCaso, CRed)
#INCLUDE ‘PROTHEUS.CH‘
#INCLUDE "TOTVS.CH"
#INCLUDE ‘FWMVCDEF.CH‘
#INCLUDE "RWMAKE.CH"
#INCLUDE ‘FWMBROWSE.CH‘
User Function F070BRW(cCaso, cRed)
Local cArqBrw, cIndice1
Local i
Local aArea := GetArea()
Private oBrFilt := FwLoadBrw("F070BRW")
Private aRotina := MenuDef()
Private cCadastro := "Filtro de Casos"
Private aCmpBrw := {}, aSeek := {}, aDados := {}, aValores := {}
If "X" == "Y" // Apenas para retirar os warnings de compilação
//BrowseDef()
MenuDef()
ModelDef()
ViewDef()
EndIf
oBrFilt:Activate()
If !Empty(cArqBrw)
Ferase(cArqBrw+GetDBExtension())
Ferase(cArqBrw+OrdBagExt())
cArqBrw := ""
TRB->(DbCloseArea())
delTabTmp(‘TRB‘)
dbClearAll()
Endif
RestArea(aArea)
//Array contendo os campos da tabela temporária
AAdd(aCmpBrw,{"ZYA_STATUS" , "C" , 01 , 0})
AAdd(aCmpBrw,{"ZYA_COD" , "C" , 06 , 0})
// AAdd(aCmpBrw,{"ZYA_DESC" , "C" , 50 , 0})
AAdd(aCmpBrw,{"ZYA_CGRPCL" , "C" , 06 , 0})
AAdd(aCmpBrw,{"ACY_DESCRI" , "C" , 50 , 0})
AAdd(aCmpBrw,{"ZYA_CODRED" , "C" , 06 , 0})
AAdd(aCmpBrw,{"ZYB_CCASO" , "C" , 06 , 0})
//Criar tabela temporária
cArqBrw := CriaTrab(aCmpBrw,.T.)
//Definir indices da tabela
cIndice1 := Alltrim(CriaTrab(,.F.))
cIndice1 := Left(cIndice1,5)+Right(cIndice1,2)+"A"
If File(cIndice1+OrdBagExt())
FErase(cIndice1+OrdBagExt())
EndIf
//Criar e abrir a tabela
If Select("TRB") > 0
dbCloseArea()
Endif
dbUseArea(.T.,,cArqBrw,"TRB",Nil,.F.)
/*Criar indice*/
IndRegua("TRB", cIndice1, "ZYA_COD" ,,, "Indice CAP...")
dbClearIndex()
dbSetIndex(cIndice1+OrdBagExt())
/*popular a tabela*/
cTabZYA := RetSqlName("ZYA")
cTabZYB := RetSqlName("ZYB")
cTabACY := RetSqlName("ACY")
//cQry += "ZYA_STATUS, ZYA_COD, ZYA_DESC, ZYA_CGRPCL, ACY_DESCRI, ZYA_CODRED, ZYB_CCASO " + CRLF
cQry := "SELECT " + CRLF
cQry += "ZYA_STATUS, ZYA_COD, ZYA_CGRPCL, ACY_DESCRI, ZYA_CODRED, ZYB_CCASO " + CRLF
cQry += " FROM " + cTabZYA + CRLF
cQry += " INNER JOIN " + cTabZYB + CRLF
cQry += " ON " + cTabZYB + ".ZYB_CODCAP = " + cTabZYA + ".ZYA_COD" + CRLF
cQry += " AND " + cTabZYB + ".D_E_L_E_T_ = ‘‘ " + CRLF
cQry += " INNER JOIN " + cTabACY + CRLF
cQry += " ON " + cTabACY + ".ACY_GRPVEN = " + cTabZYA + ".ZYA_CGRPCL" + CRLF
cQry += " AND " + cTabACY + ".D_E_L_E_T_ = ‘‘ " + CRLF
cQry += " WHERE " + cTabZYA + ".ZYA_FILIAL = ‘" + xFilial("ZYA") + "‘" + CRLF
cQry += " AND " + cTabZYA + ".D_E_L_E_T_ = ‘‘ " + CRLF
If !Empty (cCaso) .AND. !Empty(cRed)
cFilter += " AND ZYB_CCASO =‘"+cCaso+"‘ AND ZYA_CODRED =‘"+cRed+"‘"
ElseIf !Empty (cCaso)
cFilter := " AND ZYB_CCASO =‘"+cCaso+"‘"
ElseIf !Empty(cRed)
cFilter := " AND ZYA_CODRED =‘"+cRed+"‘"
Endif
cQry := cQry+cFilter
ChangeQuery(cQry)
If Select("TMP") > 0
dbSelectArea("TMP")
dbCloseArea()
Endif
DbUseArea(.T., "TOPCONN", TcGenQry( , , cQry ), "TMP", .T., .T.)
While !TMP->(Eof())
i++
If RecLock("TRB",.t.)
TRB->ZYA_STATUS := TMP->ZYA_STATUS
TRB->ZYA_COD := TMP->ZYA_COD
// TRB->ZYA_DESC := TMP->ZYA_DESC
TRB->ZYA_CGRPCL := TMP->ZYA_CGRPCL
TRB->ACY_DESCRI := TMP->ACY_DESCRI
TRB->ZYA_CODRED := TMP->ZYA_CODRED
TRB->ZYB_CCASO := TMP->ZYB_CCASO
MsUnLock()
Endif
TMP->(DbSkip())
EndDo
dbSelectArea("TRB")
// TRB->(DbGoTop())
//Campos que irão compor o combo de pesquisa na tela principal
Aadd(aSeek,{"ID" , {{"","C",06,0, "ZYA_COD" ,"@!"}}, 1, .T. } )
oBrFilt := FWmBrowse():New()
oBrFilt:SetAlias( "TRB" )
oBrFilt:SetDescription( cCadastro )
oBrFilt:SetMenuDef( ‘F070BRW‘ )
//Legenda da grade, é obrigatório carregar antes de montar as colunas
oBrFilt:AddLegend("ZYA_STATUS==‘1‘","GREEN" ,"Ativo")
oBrFilt:AddLegend("ZYA_STATUS==‘2‘","RED" ,"Encerrado")
oBrFilt:SetSeek(.T.,aSeek)
oBrFilt:SetTemporary(.T.)
oBrFilt:SetLocate()
oBrFilt:SetUseFilter(.T.)
oBrFilt:SetDBFFilter(.T.)
If !Empty(cFilter)
oBrFilt:SetFilterDefault( "TRB" ) //Exemplo de como inserir um filtro padrão >>> "TR_ST == ‘A‘"
Else
oBrFilt:SetFilterDefault( "" )
Endif
oBrFilt:SetFieldFilter(aCmpBrw)
oBrFilt:DisableDetails()
//Detalhes das colunas que serão exibidas
oBrFilt:SetColumns(MontaColunas("ZYA_COD" ,"CAP" ,01,"@!",0,006,0))
//oBrFilt:SetColumns(MontaColunas("ZYA_DESC" ,"Descr. CAP" ,02,"@!",1,050,0))
oBrFilt:SetColumns(MontaColunas("ZYA_CGRPCL" ,"Grupo" ,03,"@!",1,006,0))
oBrFilt:SetColumns(MontaColunas("ACY_DESCRI" ,"Grupo" ,04,"@!",1,050,0))
oBrFilt:SetColumns(MontaColunas("ZYA_CODRED" ,"Redator" ,05,"@!",1,006,0))
oBrFilt:SetColumns(MontaColunas("ZYB_CCASO" ,"Caso" ,06,"@!",1,006,0))
/*oBrFilt:Activate()
//RestArea(aAreaFilt)
If !Empty(cArqBrw)
Ferase(cArqBrw+GetDBExtension())
Ferase(cArqBrw+OrdBagExt())
cArqBrw := ""
TRB->(DbCloseArea())
delTabTmp(‘TRB‘)
dbClearAll()
Endif
*/
return
Static Function MontaColunas(cCampo,cTitulo,nArrData,cPicture,nAlign,nSize,nDecimal)
Local aColumn
Local bData := {||}
Default nAlign := 1
Default nSize := 20
Default nDecimal:= 0
Default nArrData:= 0
If nArrData > 0
bData := &("{||" + cCampo +"}") //&("{||oBrowse:DataArray[oBrowse:At(),"+STR(nArrData)+"]}")
EndIf
aColumn := {cTitulo,bData,,cPicture,nAlign,nSize,nDecimal,.F.,{||.T.},.F.,{||.T.},NIL,{||.T.},.F.,.F.,{}}
Return {aColumn}
Return oBrFilt
Static Function MenuDef()
Local aRotina := {}
ADD OPTION aRotina Title ‘Incluir‘ Action ‘VIEWDEF.F070BRW‘ OPERATION 3 ACCESS 0
ADD OPTION aRotina Title ‘Alterar‘ Action ‘VIEWDEF.F070BRW‘ OPERATION 4 ACCESS 0
ADD OPTION aRotina Title ‘Visualizar‘ Action ‘VIEWDEF.F070BRW‘ OPERATION 2 ACCESS 0
ADD OPTION aRotina Title ‘Excluir‘ Action ‘VIEWDEF.F070BRW‘ OPERATION 5 ACCESS 0
Return aRotina
//-------------------------------------------------------------------
Static Function ModelDef()
// Cria a estrutura a ser usada no Modelo de Dados
//Local oModelBRW := oModel:GetModel( ‘ZYBDETAIL‘ )
Local oModelBRW:= MPFormModel():New(‘BRWCAP‘, /*bPreValidacao*/, /*bVldPos*/, /*bCommit*/, /*bCancel*/ )
Local oZYA := FWFormStruct( 1, ‘ZYA‘, /*bAvalCampo*/, /*lViewUsado*/ )
Local oZYB := FWFormStruct( 1, ‘ZYB‘, /*bAvalCampo*/, /*lViewUsado*/ )
// Cria o objeto do Modelo de Dados
//oModel := MPFormModel():New( ‘COMP0CAP‘, /*bPreValidacao*/, bVldPos, /*bCommit*/, /*bCancel*/ )
// Adiciona ao modelo uma estrutura de formulário de edição por campo
oModelBRW:AddFields( ‘ZYAMASTER‘, /*cOwner*/, oZYA )
// Adiciona ao modelo uma estrutura de formulário de edição por grid
oModelBRW:AddGrid( ‘ZYBDETAIL‘, ‘ZYAMASTER‘ , oZYB, /*bLinePre*/, /*bLinePost*/, /*bPreVal*/, /*bPosVal*/, /*BLoad*/ )
// Faz relaciomaneto entre os compomentes do model
oModelBRW:SetRelation( ‘ZYBDETAIL‘, { { ‘ZYB_CODCAP‘, ‘ZYA_COD‘ } }, ZYB->( IndexKey( 1 ) ) )
// Liga o controle de nao repeticao de linha
oModelBRW:GetModel( ‘ZYBDETAIL‘ ):SetUniqueLine( { ‘ZYB_COD‘ } )
// Adiciona a descricao do Modelo de Dados
oModelBRW:SetDescription( ‘Filtro CAP‘ )
//Define a chave primaria utilizada pelo modelo
oModelBRW:SetPrimaryKey({‘ZYA_FILIAL‘, ‘ZYA_COD‘})
// Adiciona a descricao do Componente do Modelo de Dados
oModelBRW:GetModel( ‘ZYAMASTER‘ ):SetDescription( ‘Cabeçalho‘ )
oModelBRW:GetModel( ‘ZYBDETAIL‘ ):SetDescription( ‘Detalhe‘ )
Return oModelBRW
//-------------------------------------------------------------------
Static Function ViewDef()
// Cria um objeto de Modelo de Dados baseado no ModelDef do fonte informado
Local oZYA := FWFormStruct( 2, ‘ZYA‘ )
Local oZYB := FWFormStruct( 2, ‘ZYB‘ )
Local oModel := FWLoadModel( ‘F070BRW‘ )
Local oView
Private lRet := .T.
// Cria o objeto de View
oView := FWFormView():New()
// Define qual o Modelo de dados será utilizado
oView:SetModel( oModel )
//Adiciona no nosso View um controle do tipo FormFields(antiga enchoice)
oView:AddField( ‘VIEW_ZYA‘, oZYA, ‘ZYAMASTER‘ )
//Adiciona no nosso View um controle do tipo FormGrid(antiga newgetdados)
oView:AddGrid( ‘VIEW_ZYB‘, oZYB, ‘ZYBDETAIL‘ )
// Criar um "box" horizontal para receber algum elemento da view
oView:CreateHorizontalBox( ‘SUPERIOR‘, 60 )
oView:CreateHorizontalBox( ‘INFERIOR‘, 40 )
// Relaciona o ID da View com o "box" para exibicao
oView:SetOwnerView( ‘VIEW_ZYA‘, ‘SUPERIOR‘ )
oView:SetOwnerView( ‘VIEW_ZYB‘, ‘INFERIOR‘ )
// Define campos que terao Auto Incremento
oView:AddIncrementField( ‘VIEW_ZYB‘, ‘ZYB_COD‘ )
// Liga a identificacao do componente
oView:EnableTitleView(‘VIEW_ZYB‘,‘Casos CAP‘)
Return oView
Luciana Martins Silveira |
|
Para postar no Fórum você precisa efetuar o seu login ou se registrar
|
|