Exemplo de P.E. em MVC para adição de coluna na Grid
Exemplo 1- Exemplo do P.E. GTPA283 para adição de coluna da tabela GIC:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | #include "TOTVS.ch" #include "FWMVCDEF.CH" /*/{Protheus.doc} User Function GTPA283 Ponto de Entrada MVC Rotina GTPA283 (Cadastro de Requisições) @type Function @version 1 @param @return nil,null, sem retorno @example (examples) @see (links_or_references) /*/ User Function GTPA283() Local aParams := ParamIXB //Parâmetros do Ponto de Entrada Local oObj := Nil //Objeto do formulário ou do modelo, conforme o caso Local cIDEvent := Nil //ID do local de execução do ponto de entrada Local cIDForm := Nil //ID do formulário Local oMdlGIC := Nil //Model GRIDGIC Local oView := Nil //View Ativa Local oStruct := Nil //Struct Local oStruGIC := Nil //Struct Padrão da Tabela GIC Local aFieldsGIC := {} //Campos Padrões da Tabela GIC Local nPosCpo1 := 0 //Posição do Campo GIC_X_NOM Local nPosCpo2 := 0 //Posição do Campo GIC_X_RG Local lFieldOK := .F. //Campos já existem ? Local nI := 0 //Controle de FOR Local lRet := .T. //Retorno //Verifica se possui os parâmetros If !(aParams == Nil) oObj := aParams[01] //Objeto do formulário ou do modelo, conforme o caso cIDEvent := aParams[02] //ID do local de execução do ponto de entrada cIDForm := aParams[03] //ID do formulário //Verifica se é TudoOK If (AllTrim(cIDEvent) == "MODELPOS" ) oMdlGIC := oObj:GetModel( 'GRIDGIC' ) GIC->(DBSetOrder(01)) //GIC_FILIAL+GIC_CODIGO For nI := 01 To oMdlGIC:Length() oMdlGIC:GoLine(nI) If !(oMdlGIC:IsDeleted()) If Empty(oMdlGIC:GetValue( 'GIC_X_NOM' )) lRet := .F. Help( ,, 'Help' , "GIC_X_NOM" , 'Campo GIC_X_NOM não preenchido na Linha: ' + cValToChar(nI), 1, 0 ) ElseIf Empty(oMdlGIC:GetValue( 'GIC_X_RG' )) lRet := .F. Help( ,, 'Help' , "GIC_X_RG" , 'Campo GIC_X_RG não preenchido na Linha: ' + cValToChar(nI), 1, 0 ) EndIf EndIf Next nI //Verifica se é o Commit do Modelo ElseIf (AllTrim(cIDEvent) == "MODELCOMMITNTTS" ) oMdlGIC := oObj:GetModel( 'GRIDGIC' ) GIC->(DBSetOrder(01)) //GIC_FILIAL+GIC_CODIGO For nI := 01 To oMdlGIC:Length() oMdlGIC:GoLine(nI) If !(oMdlGIC:IsDeleted()) //Posicionar no Registro If (GIC->(DBSeek(FWxFilial( 'GIC' ) + oMdlGIC:GetValue( 'GIC_CODIGO' )))) If (RecLock( 'GIC' , .F.)) GIC->GIC_X_NOM := oMdlGIC:GetValue( 'GIC_X_NOM' ) GIC->GIC_X_RG := oMdlGIC:GetValue( 'GIC_X_RG' ) GIC->(MsUnlock()) EndIf EndIf EndIf Next nI //Verifica se está no Evento MODELPRE e se a View Ativa foi recuperada ElseIf (AllTrim(cIDEvent) == "MODELPRE" .AND. AllTrim(oObj:cID) == "GTPA283" ) oView := FWViewActive() If ValType(oView) == "O" //Pegando a Struct do Modelo oStruct := oView:GetViewStruct( "GRIDGIC" ) //Verifica se os campos já existem lFieldOK := AScan(oStruct:GetFields(), {|x| AllTrim(x[01]) == "GIC_X_NOM" }) > 0 //Adicionando campos If (! lFieldOK) //GIC_X_NOM oStruct:AddField(; "GIC_X_NOM" ,; //<cIdField > "D1" ,; //<cOrdem > "Passageiro" ,; //<cTitulo > "Nome do Passageiro" ,; //<cDescric > Nil ,; //<aHelp > "GET" ,; //<cType > "@!" ,; //<cPicture > Nil ,; //<bPictVar > "" ,; //<cLookUp > .T. ,; //<lCanChange > "" ,; //<cFolder > "" ,; //<cGroup > {} ,; //<aComboValues > 0 ,; //<nMaxLenCombo > "" ,; //<cIniBrow > .F. ,; //<lVirtual > "" ,; //<cPictVar > .F. ,; //<lInsertLine > 0 ,; //<nWidth > ) //GIC_X_RG oStruct:AddField(; "GIC_X_RG" ,; //<cIdField > "D2" ,; //<cOrdem > "RG" ,; //<cTitulo > "Cedula de Identidade" ,; //<cDescric > Nil ,; //<aHelp > "GET" ,; //<cType > "@!" ,; //<cPicture > Nil ,; //<bPictVar > "" ,; //<cLookUp > .T. ,; //<lCanChange > "" ,; //<cFolder > "" ,; //<cGroup > {} ,; //<aComboValues > 0 ,; //<nMaxLenCombo > "" ,; //<cIniBrow > .F. ,; //<lVirtual > "" ,; //<cPictVar > .F. ,; //<lInsertLine > 0 ,; //<nWidth > ) lCtrl283 := .T. //Campos já inclusos EndIf EndIf EndIf EndIf Return lRet |
Observações:
- Caso tenha dúvidas ou problemas com os exemplos, entre em contato;
- Se tiver sugestões de rotinas, pode entrar em contato;
- Exemplo enviado por Alison Lemes;