Histórico da Página
...
Abaixo um exemplo de como fazer isso, criando um Grid de Produtos ( SB1 ) sem cabeçalho.
Bloco de código | |||||
---|---|---|---|---|---|
| |||||
#include "#Include 'protheus.ch'" #Include#include '"fwmvcdef.ch'" #Define#define MVC_TITLE 'GRID Sem Cabeçalho' "Grid MVC sem cabeçalho" #define MVC_ALIAS "SB1" #define MVC_VIEWDEF_NAME "VIEWDEF.MVCSOGRID" //------------------------------------------------------------------- /*/{Protheus.doc} uU_semcabecMVCGRID Função principal da rotina MVC. Chama direto a inclusão @author Daniel izac.ciszevskiMendes @since 16.03.202010/07/2020 @version 1.0 /*/ //------------------------------------------------------------------- Function u_xt18443() FWExecView( 'GRID Sem Cabeçalho', "VIEWDEF.SEMCABEC", MODEL_OPERATION_INSERT, , { || .T. }, , 30 ) Returnuser function MVCGRID() //Inserção - Inclusão de itens FWExecView( getTitle(MODEL_OPERATION_INSERT), MVC_VIEWDEF_NAME, MODEL_OPERATION_INSERT) //Visualização - Verificar os itens incluídos FWExecView( getTitle(MODEL_OPERATION_VIEW), MVC_VIEWDEF_NAME, MODEL_OPERATION_VIEW) //Alteração - Por ser um grid, a alteração já vai permitir a exclusão FWExecView( getTitle(MODEL_OPERATION_UPDATE), MVC_VIEWDEF_NAME, MODEL_OPERATION_UPDATE) //Visualização - Verificar os itens adicionados, alterados ou excluidos FWExecView( getTitle(MODEL_OPERATION_VIEW), MVC_VIEWDEF_NAME, MODEL_OPERATION_VIEW) return //------------------------------------------------------------------- /*/{Protheus.doc} getTitle Retorna o título para a janela MVC, conforme operação @param nOperation - Operação do modelo @return cTitle - String com o título da janela @author Daniel Mendes @since 10/07/2020 @version 1.0 /*/ //------------------------------------------------------------------- static function getTitle(nOperation) local cTitle as character if nOperation == MODEL_OPERATION_INSERT cTitle := "Inclusão" elseif nOperation == MODEL_OPERATION_UPDATE cTitle := "Alteração" else cTitle := "Visualização" endif return cTitle //------------------------------------------------------------------- /*/{Protheus.doc} ModelDef Montagem do modelo dados para MVC @return oModel - Objeto do modelo de dados @author Daniel izac.ciszevskiMendes @since 16.03.202010/07/2020 @version 1.0 /*/ //------------------------------------------------------------------- Staticstatic Functionfunction ModelDef() Locallocal oModel as As Object Localobject local oStrField Asas Objectobject Locallocal oStrGrid Asas Objectobject // Estrutura Fake de Field oStrField := FWFormModelStruct():New() oStrField:AddTable( '' addTable("", { '"C_STRING1' "} , MVC_TITLE , {|| ''""} ) oStrField:AddFieldaddField( '"String 01' ", '"Campo de texto' ", '"C_STRING1' ", '"C' ", 15 ) //Estrutura de Grid , alias Real presente no dicionário de dados oStrGrid := FWFormStruct( 1, 'SB1' ) MVC_ALIAS) oModel := MPFormModel():New( '"MIDMAIN' ") oModel:AddFieldsaddFields('"CABID'", /*cOwner*/, oStrField, /*bPre*/, /*bPost*/, {|oMdl| loadHidFld()}) oModel:AddGridaddGrid( '"GRIDID'", '"CABID'", oStrGrid, /*bLinePre*/, /*bLinePost*/, /*bPre*/, /*bPost*/, {|oMdl| loadGrid(oMdl)}) oModel:SetRelation( 'GRIDID', { { 'C_STRING1', 'C_STRING1' } } ) oModel:SetDescription( MVC_TITLE ) oModel:SetPrimaryKey( { 'C_STRING1' } ) // É necessário que haja alguma alteração na estrutura Field oModel:SetActivate( { | oModel | FwFldPut( "C_STRING1", "FAKE" ) } ) Return oModelsetDescription(MVC_TITLE) // É necessário que haja alguma alteração na estrutura Field oModel:setActivate({ |oModel| onActivate(oModel)}) return oModel //------------------------------------------------------------------- /*/{Protheus.doc} onActivate Função estática para o activate do model @param oModel - Objeto do modelo de dados @author Daniel Mendes @since 10/07/2020 @version 1.0 /*/ //------------------------------------------------------------------- static function onActivate(oModel) //Só efetua a alteração do campo para inserção if oModel:GetOperation() == MODEL_OPERATION_INSERT FwFldPut("C_STRING1", "FAKE" , /*nLinha*/, oModel) endif return //------------------------------------------------------------------- /*/{Protheus.doc} loadGrid Função estática para efetuar o load dos dados do grid @param oModel - Objeto do modelo de dados @return aData - Array com os dados para exibição no grid @author Daniel Mendes @since 10/07/2020 @version 1.0 /*/ //------------------------------------------------------------------- static function loadGrid(oModel) local aData as array local cAlias as character local cWorkArea as character local cTablename as character cWorkArea := Alias() cAlias := GetNextAlias() cTablename := "%" + RetSqlName(MVC_ALIAS) + "%" BeginSql Alias cAlias SELECT *, R_E_C_N_O_ RECNO FROM %exp:cTablename% WHERE D_E_L_E_T_ = ' ' EndSql aData := FwLoadByAlias(oModel, cAlias, MVC_ALIAS, "RECNO", /*lCopy*/, .T.) (cAlias)->(DBCloseArea()) if !Empty(cWorkArea) .And. Select(cWorkArea) > 0 DBSelectArea(cWorkArea) endif return aData //------------------------------------------------------------------- /*/{Protheus.doc} ViewDefloadHidFld Função estática para load dos dados do ViewDef field escondido @param oModel - Objeto do modelo de dados @return Array - Dados para o load do field do modelo de dados @author Daniel izac.ciszevskiMendes @since 16.03.202010/07/2020 @version 1.0 /*/ //------------------------------------------------------------------- Staticstatic Functionfunction ViewDefloadHidFld(oModel) Local oView As Object Local oModel As Object Local oStrCab As Object Local oStrGrid As Object return {""} //------------------------------------------------------------------- /*/{Protheus.doc} ViewDef Função estática do ViewDef @return oView - Objeto da view, interface @author Daniel Mendes @since 10/07/2020 @version 1.0 /*/ //------------------------------------------------------------------- static function viewDef() local oView as object local oModel as object local oStrCab as object local oStrGrid as object // Estrutura Fake de Field oStrCab := FWFormViewStruct():New() oStrCab:AddFieldaddField( '"C_STRING1' ", '"01'" , '"String 01' ", '"Campo de texto'", , '"C'" ) //Estrutura de Grid oStrGrid := FWFormStruct( 2, 'SB1'MVC_ALIAS ) oModel := FWLoadModel( 'SEMCABEC' "MVCSOGRID") oView := FwFormView():New() oView:SetModelsetModel( oModel ) oView:AddFieldaddField('"CAB'", oStrCab, '"CABID'") oView:AddGridaddGrid('"GRID'", oStrGrid, '"GRIDID'") oView:CreateHorizontalBox( 'TOHID'createHorizontalBox("TOHIDE", 0 ) oView:CreateHorizontalBoxcreateHorizontalBox( '"TOSHOW'", 100 ) oView:SetOwnerViewsetOwnerView('"CAB' ", 'TOHID'"TOHIDE" ) oView:SetOwnerViewsetOwnerView('"GRID'", '"TOSHOW'") oView:SetDescriptionsetDescription( MVC_TITLE ) Returnreturn oView |
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas