- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- AdvPL x MVC
- Colocar Browser no MODELO 3 ()
Perguntas Colocar Browser no MODELO 3 ()
- aramissf1997
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 2
- Obrigados Recebidos: 0
3 anos 7 meses atrás #33008
por aramissf1997
Colocar Browser no MODELO 3 () foi criado por aramissf1997
Bom dia, fiz esse código, porem isso e só o cadastro e não estou conseguindo colocar um browser nele, se alguém conseguir me ajudar.
#include "protheus.ch"
#include "rwmake.ch"
User Function OCORRENCIAS()
Local cOpcao as character
Local nOpcE as numeric
Local nOpcG as numeric
Local nUsado as numeric
Local _ni as numeric
Private aHeader as array
Private aRotina as array
Private aCols as array
aRotina := {{ "Pesquisa","AxPesqui", 0 , 1}, { "Visual","AxVisual", 0 , 2}, { "Inclui","AxInclui", 0 , 3}, { "Altera","AxAltera", 0 , 4, 20 }, { "Exclui","AxDeleta", 0 , 5, 21 }}
cOpcao:= "INCLUIR"
Do Case
Case cOpcao=="INCLUIR"; nOpcE:=3 ; nOpcG:=3
Case cOpcao=="ALTERAR"; nOpcE:=3 ; nOpcG:=3
Case cOpcao=="VISUALIZAR"; nOpcE:=2 ; nOpcG:=2
EndCase
DbSelectArea("ZZD")
DbSetOrder(1)
DbGotop()
RegToMemory("ZZE", (cOpcao=="INCLUIR"))
nUsado := 0
dbSelectArea("SX3")
DbSetOrder(1)
DbSeek("ZZD")
aHeader := {}
While !Eof() .And. (X3_ARQUIVO == "ZZD")
If Alltrim(X3_CAMPO) == "ZZD_ITEM"
dbSkip()
Loop
Endif
If X3USO(X3_USADO) .And. cNivel >= X3_NIVEL
nUsado := nUsado+1
Aadd(aHeader,{ TRIM(X3_TITULO),;
AllTrim(X3_CAMPO),;
X3_PICTURE,;
X3_TAMANHO,;
X3_DECIMAL,;
"AllwaysTrue()",;
X3_USADO,;
X3_TIPO,;
X3_ARQUIVO,;
X3_CONTEXT } )
Endif
dbSkip()
EndDo
If cOpcao == "INCLUIR"
aCols:={Array(nUsado+1)}
aCols[1, nUsado+1] := .F.
For _ni := 1 to nUsado
aCols[1, _ni] := CriaVar(aHeader[_ni, 2])
Next
Else
aCols := {}
dbSelectArea("ZZD")
dbSetOrder(1)
dbSeek(xFilial()+M->C5_COD)
While !eof() .and. ZZD->ZZD_FILIAL == M->ZZE_FILIAL
AADD(aCols, Array(nUsado+1))
For _ni := 1 to nUsado
aCols[Len(aCols), _ni] := FieldGet(FieldPos(aHeader[_ni, 2]))
Next
aCols[Len(aCols), nUsado+1] := .F.
dbSkip()
EndDo
Endif
If Len(aCols) > 0
cTitulo := "Cadastro de Ocorrencias"
cAliasEnchoice := "ZZE"
cAliasGetD := "ZZD"
cLinOk := "AllwaysTrue()"
cTudOk := "AllwaysTrue()"
cFieldOk := "AllwaysTrue()"
_lRet:= Modelo3(cTitulo, cAliasEnchoice, cAliasGetD,, cLinOk, cTudOk, nOpcE, nOpcG, cFieldOk)
If _lRet
Aviso("OCORRENCIAS", "Ocorrencia salva com sucesso!", {"Ok"})
Endif
Endif
Return
Por favor Acessar ou Registrar para participar da conversa.
- admin
- Desconectado
- Administrador
Menos
Mais
- Postagens: 297
- Obrigados Recebidos: 21
3 anos 7 meses atrás #33012
por admin
Respondido por admin no tópico Colocar Browser no MODELO 3 ()
Brother para este caso te aconselho a usar MVC, segue um exemplo e também um video para vc criar o fonte.
Menos dor de cabeça.
Abraços
terminaldeinformacao.com/2016/09/15/vd-advpl-020/
www.youtube.com/watch?v=Q7AU8YA0Gkc
segue um exemplo, o forum esta com problemas para anexar arquivos.
Menos dor de cabeça.
Abraços
terminaldeinformacao.com/2016/09/15/vd-advpl-020/
www.youtube.com/watch?v=Q7AU8YA0Gkc
segue um exemplo, o forum esta com problemas para anexar arquivos.
//Bibliotecas
#Include 'Protheus.ch'
#Include 'FWMVCDef.ch'
#Include "Topconn.ch"
#Include "TbiConn.ch"
#Include "TbiCode.ch"
//Variáveis Estáticas
Static cTitulo := "Cadastro Geometria"
/*/{Protheus.doc} VndMat
Função para cadastro de Grupo de Produtos (SBM) e Produtos (SB1), exemplo de Modelo 3 em MVC
@author AtilioMVCMd3
@since 17/08/2015
@version 1.0
@return Nil, Função não tem retorno
@example
u_CadGeo()
@obs Não se pode executar função MVC dentro do fórmulas
/*/
User Function CadGeo()
Local aArea := GetArea()
Local oBrowse
Private cDirDest := GetNewPar("MV_GEDEST",GetSrvProfString("Startpath", "")+'Geometrias\'+AlLTrim(M->ZQ_PARTNUM)+'_'+AllTrim(M->ZQ_VERSAO)+'_'+AllTrim(M->ZQ_OPERA))
//Instânciando FWMBrowse - Somente com dicionário de dados
oBrowse := FWMBrowse():New()
//Setando a tabela de cadastro de Autor/Interprete
oBrowse:SetAlias("SZQ")
//Setando a descrição da rotina
oBrowse:SetDescription(cTitulo)
//Legendas
oBrowse:AddLegend( "SZQ->ZQ_STATUS == 'L'", "GREEN" , "Geometria Liberada" )
oBrowse:AddLegend( "SZQ->ZQ_STATUS == 'B'", "RED" , "Geometria Bloqueada" )
//Ativa a Browse
oBrowse:Activate()
RestArea(aArea)
Return Nil
/*---------------------------------------------------------------------*
| Func: MenuDef |
| Autor: Daniel Atilio |
| Data: 17/08/2015 |
| Desc: Criação do menu MVC |
| Obs.: / |
*---------------------------------------------------------------------*/
Static Function MenuDef()
Local aRot := {}
//Adicionando opções
ADD OPTION aRot TITLE 'Visualizar' ACTION 'VIEWDEF.CadGeo' OPERATION MODEL_OPERATION_VIEW ACCESS 0 //OPERATION 1
ADD OPTION aRot TITLE 'Incluir' ACTION 'VIEWDEF.CadGeo' OPERATION MODEL_OPERATION_INSERT ACCESS 0 //OPERATION 3
ADD OPTION aRot TITLE 'Revisão' ACTION 'VIEWDEF.CadGeo' OPERATION MODEL_OPERATION_UPDATE ACCESS 0 //OPERATION 4
// ADD OPTION aRot TITLE 'Revisão' ACTION 'GeoCpy' OPERATION 9 ACCESS 0 //'Copia'
ADD OPTION aRot TITLE 'Excluir' ACTION 'VIEWDEF.CadGeo' OPERATION MODEL_OPERATION_DELETE ACCESS 0 //OPERATION 5
ADD OPTION aRot TITLE 'Legenda' ACTION 'u_LegGeo' OPERATION 6 ACCESS 0 //OPERATION X
ADD OPTION aRot TITLE 'Liberação' ACTION "U_fPrcGeo()" OPERATION 4 ACCESS 0 //"Agendas Mat"
ADD OPTION aRot TITLE 'Relatorio' ACTION "U_fRelGeo()" OPERATION 4 ACCESS 0 //"Agendas Mat"
Return aRot
/*---------------------------------------------------------------------*
| Func: ModelDef |
| Autor: Daniel Atilio |
| Data: 17/08/2015 |
| Desc: Criação do modelo de dados MVC |
| Obs.: / |
*---------------------------------------------------------------------*/
Static Function ModelDef()
Local oModel := Nil
Local oStPai := FWFormStruct(1, 'SZQ')
Local oStFilho := FWFormStruct(1, 'SZR')
Local aSB1Rel := {}
// Cria o objeto do Modelo de Dados
oModel := MPFormModel():New( 'CadGeoM', /*bPreValidacao*/,{|oModel| fTrfFiles(oModel) } ,/*bCommit*/, /*bCancel*/ )
oModel:AddFields('SZQMASTER',/*cOwner*/,oStPai)
oModel:AddGrid('SZRDETAIL','SZQMASTER',oStFilho,/*bLinePre*/, /*bLinePost*/,/*bPre - Grid Inteiro*/,/*bPos - Grid Inteiro*/,/*bLoad - Carga do modelo manualmente*/) //cOwner é para quem pertence
//Definições dos campos
oStPai:SetProperty('ZQ_IDGEO', MODEL_FIELD_WHEN, FwBuildFeature(STRUCT_FEATURE_WHEN, '.F.')) //Modo de Edição
oStPai:SetProperty('ZQ_IDGEO', MODEL_FIELD_INIT, FwBuildFeature(STRUCT_FEATURE_INIPAD, 'GetSXENum("SZQ", "ZQ_IDGEO")')) //Ini Padrão
//Fazendo o relacionamento entre o Pai e Filho
aAdd(aSB1Rel, {'ZR_FILIAL', 'xFilial("SZR")'} )
aAdd(aSB1Rel, {'ZR_IDGEO', 'ZQ_IDGEO'})
oModel:SetRelation('SZRDETAIL', aSB1Rel, SZR->(IndexKey(1))) //IndexKey -> quero a ordenação e depois filtrado
oModel:GetModel('SZRDETAIL'):SetUniqueLine({"ZR_CAMADA",'ZR_ARQUIVO','ZR_DESTINO','ZR_ORIGEM'}) //Não repetir informações ou combinações {"CAMPO1","CAMPO2","CAMPOX"}
oModel:SetPrimaryKey({})
//Setando as descrições
oModel:SetDescription("Cadastro Geometria")
oModel:GetModel('SZQMASTER'):SetDescription('Cadastro Geometria')
oModel:GetModel('SZRDETAIL'):SetDescription('Arquivos Relacionados')
Return oModel
/*---------------------------------------------------------------------*
| Func: ViewDef |
| Autor: Daniel Atilio |
| Data: 17/08/2015 |
| Desc: Criação da visão MVC |
| Obs.: / |
*---------------------------------------------------------------------*/
Static Function ViewDef()
Local oView := Nil
Local oModel := FWLoadModel('CadGeo')
Local oStPai := FWFormStruct(2, 'SZQ')
Local oStFilho := FWFormStruct(2, 'SZR')
Local nOperation := oModel:GetOperation()
//Criando a View
oView := FWFormView():New()
oView:SetModel(oModel)
//Adicionando os campos do cabeçalho e o grid dos filhos
oView:AddField('VIEW_SZQ',oStPai,'SZQMASTER')
oView:AddGrid('VIEW_SZR',oStFilho,'SZRDETAIL')
// Define campos que terao Auto Incremento
oView:AddIncrementField( 'VIEW_SZR', 'ZR_CAMADA' )
// Adiciona Opcoes no Acoes Relacionadas da Tela
// If nOperation == MODEL_OPERATION_INSERT .Or. nOperation == MODEL_OPERATION_UPDATE
oView:AddUserButton("Busca (DXF's) ","",{|oView| fSelDir(oView) })
// Endif
//Setando o dimensionamento de tamanho
oView:CreateHorizontalBox('CABEC',30)
oView:CreateHorizontalBox('GRID',70)
//Amarrando a view com as box
oView:SetOwnerView('VIEW_SZQ','CABEC')
oView:SetOwnerView('VIEW_SZR','GRID')
//Habilitando título
oView:EnableTitleView('VIEW_SZQ','Cadastro Geometria')
oView:EnableTitleView('VIEW_SZR','Arquivos Relacionados')
//Remove os campos de Código do Artista e CD
oStFilho:RemoveField('ZR_IDGEO')
Return oView
/*/{Protheus.doc} zMVC01Leg
Função para mostrar a legenda das rotinas MVC com grupo de produtos
@author Atilio
@since 17/08/2015
@version 1.0
@example
u_zMVC01Leg()
/*/
User Function LegGeo()
Local aLegenda := {}
//Monta as cores
AADD(aLegenda,{"BR_VERDE", "Geometria Liberada" })
AADD(aLegenda,{"BR_VERMELHO", "Geometria Bloqueada"})
BrwLegenda("Cadastro de Geometria", "Status", aLegenda)
Return
//+-----------------------------------------------------------------------------------//
//|Funcao....: fSelDir()
//|Autor.....: Luiz Alberto Vieira Alves - 3L Systems - lalberto@3lsystems.com.br
//|Data......: 22 de Novembro de 2019, 10:00
//|Descricao.: Janela de Selecao de Diretorio Para Busca de arquivos
//|Observação:
//+-----------------------------------------------------------------------------------//
*-----------------------------------------------------------*
Static Function fSelDir(oView)
*-----------------------------------------------------------*
If Empty(M->ZQ_VERSAO)
MsgStop("Atenção, Para Busca dos Arquivos é Necessário que o Campo Versão Esteja Preenchido !")
Return .F.
Endif
/*If Empty(M->ZQ_OPERA)
MsgStop("Atenção, Para Busca dos Arquivos é Necessário que o Campo Operação Esteja Preenchido !")
Return .F.
Endif
*/
cDirOri := cGetFile(,"Selecione o diretorio",,"",.T.,GETF_LOCALHARD+ GETF_RETDIRECTORY+GETF_NETWORKDRIVE)
If !Empty(cDirOri)
Processa( {|| fAddArqs(oView,cDirOri) },"Adicionando Lista de Arquivos do Diretório Selecionado..." )
EndIf
Return
//+-----------------------------------------------------------------------------------//
//|Funcao....: fAddArqs(cDirOri)
//|Autor.....: Luiz Alberto Vieira Alves - 3L Systems - lalberto@3lsystems.com.br
//|Data......: 22 de Novembro de 2019, 10:00
//|Descricao.: Adiciona Arquivos ao Grid
//|Observação:
//+-----------------------------------------------------------------------------------//
*-----------------------------------------------------------*
Static Function fAddArqs(oView,cDirOri)
*-----------------------------------------------------------*
Local oModelSZR := oView:GetModel('SZRDETAIL')
If !MsgYesNo("Confirma a Carga dos Arquivos do Diretório " + cDirOri + " ? ","Atenção")
Return .f.
Endif
aArquivo := {}
aTamanho := {}
Adir(AllTrim(cDirOri) + "\*.dxf",aArquivo,aTamanho)
ProcRegua(Len(aArquivo))
For nArq :=1 To Len(aArquivo)
IncProc("Processando Arquivo " + aArquivo[nArq])
oModelSZR:LoadValue("ZR_CAMADA",StrZero(nArq,3))
oModelSZR:LoadValue("ZR_ARQUIVO",aArquivo[nArq])
oModelSZR:LoadValue("ZR_DESTINO",cDirDest)
oModelSZR:LoadValue("ZR_ORIGEM",cDirOri)
oModelSZR:AddLine()
Next
oModelSZR:SetLine(1)
oView:Refresh()
MsgInfo("Arquivos Importados com Sucesso.")
Return
//+-----------------------------------------------------------------------------------//
//|Funcao....: fTrfFiles(oModel)
//|Autor.....: Luiz Alberto Vieira Alves - 3L Systems - lalberto@3lsystems.com.br
//|Data......: 22 de Novembro de 2019, 10:00
//|Descricao.: Faz a Copia dos Arquivos da Pasta Origem para o Destino
//|Observação:
//+-----------------------------------------------------------------------------------//
Static Function fTrfFiles()
Local oModel := FWModelActive()
Local oModelSZR := oModel:GetModel('SZRDETAIL')
Local lOk := .T.
nLocal := Aviso("Você Está Usando o Servidor ou Estação de Trabalho ?","Selecione a Origem de Acesso",{"Servidor",'Estação'},3)
If nLocal == 1
For nI := 1 To oModelSZR:Length()
oModelSZR:GoLine( nI )
If !ExistDir( AllTrim(oModelSZR:GetValue("ZR_DESTINO")) )
MakeDir(AllTrim(oModelSZR:GetValue("ZR_DESTINO")))
Endif
cArqOri := AllTrim(oModelSZR:GetValue("ZR_ORIGEM"))+oModelSZR:GetValue("ZR_ARQUIVO")
cArqDes := AllTrim(oModelSZR:GetValue("ZR_DESTINO"))+'\'+oModelSZR:GetValue("ZR_ARQUIVO")
lOk := __CopyFile(cArqOri, cArqDes,,,.F.)
If !lOk
MsgStop("Falha Na Copia dos Arquivos Para o Servidor, Verifique !!!")
EndIf
Next
Else
For nI := 1 To oModelSZR:Length()
oModelSZR:GoLine( nI )
If !ExistDir( AllTrim(oModelSZR:GetValue("ZR_DESTINO")) )
MakeDir(AllTrim(oModelSZR:GetValue("ZR_DESTINO")))
Endif
cArqOri := AllTrim(oModelSZR:GetValue("ZR_ORIGEM"))+oModelSZR:GetValue("ZR_ARQUIVO")
cArqDes := AllTrim(oModelSZR:GetValue("ZR_DESTINO"))
CPYT2S(cArqOri,cArqDes,.T.)
Next
Endif
//Realiza a gravação do Modelo
FWFormCommit( oModel )
Return .T.
//-------------------------------------------------------------------
/*/{Protheus.doc} GeoCpy
Gera Nova Revisão da Geometria Posicionada
@author Luiz Alberto
@since 22/11/2019
@version 12
/*/
//-------------------------------------------------------------------
Static Function GeoCpy(cAlias,nReg,nOpc)
Local cBase := SN1->N1_CBASE
Local cItem := SN1->N1_ITEM
Local lConfirma := .F.
Local lCancela := .F.
Local cTitulo := ""
Local cPrograma := ""
Local nOperation := 0
Local nX := 0
Local lRet := .T.
Local cChapa := ""
Local cItemOri := ""
Local oAux := Nil
Local oStruct := Nil
Local aAux := {}
Local nLin := 1
SN1->(dbSetOrder(1)) //N1_FILIAL+N1_CBASE+N1_ITEM
If SN1->(MsSeek(xFilial("SN1") + cBase + cItem ))
__lCopia := .T.
__lIncluMan := .T.
cTitulo := 'Cópia'
cPrograma := 'ATFA012'
nOperation := MODEL_OPERATION_INSERT
oModel := FWLoadModel( cPrograma )
oModel:SetOperation( nOperation ) // Inclusão
oModel:Activate(.T.) // Ativa o modelo com os dados posicionados
oAux := oModel:GetModel("SN3DETAIL")
oStruct := oAux:GetStruct()
aAux := oStruct:GetFields()
oModel:LoadValue("SN1MASTER","N1_CBASE","")
oModel:LoadValue("SN1MASTER","N1_ITEM","")
oModel:LoadValue("SN1MASTER","N1_CHAPA","")
pergunte("AFA012",.F.)
AF012PerAut()
If MV_PAR03 == 2
For nLin := 1 to Len(oAux:aCols)
oAux:SetLine(nLin)
For nX := 1 to Len(aAux)
If "N3_DINDEPR" $ aAux[nX,3]
oAux:LoadValue( aAux[nX,3] , dDatabase )
ElseIf "N3_VRDACM" $ aAux[nX,3] .Or. "N3_VRCACM" $ aAux[nX,3]
oAux:LoadValue( aAux[nX,3] , 0 )
EndIf
Next nX
Next nLin
oAux:SetLine(1)
EndIf
lMostra := MV_PAR01 == 1
lContab := MV_PAR05 == 1
lAglut := MV_PAR06 == 1
If lContab
cLoteCTB := LoteCont("ATF")
nTotCTB := 0
cTrbCTB := ""
nHandle := HeadProva(cLoteCTB,"ATFA012",Substr(cUsername,1,6),@cTrbCTB)
__aCtb := Array(4)
__aCtb[1] := nHandle
__aCtb[2] := nTotCTB
__aCtb[3] := cTrbCTB
__aCtb[4] := cLoteCTB
EndIf
nRet := FWExecView( cTitulo , cPrograma, nOperation, /*oDlg*/, {|| .T. } ,/*bOk*/ , /*nPercReducao*/, /*aEnableButtons*/, /*bCancel*/ , /*cOperatId*/, /*cToolBar*/, oModel )
oModel:DeActivate()
__lCopia := .F.
__lIncluMan := .F.
If nRet == 0 // OK
MsgRun( "Gerando fichas de ativos ..." ,, {|| AF012Multi() } ) //
If __nHdlPrv > 0 .And. ( __nTotal > 0 )
RodaProva(__nHdlPrv, __nTotal)
cA100Incl(__cArqCtb,__nHdlPrv,3,__cLoteAtf,lMostra,lAglut)
Endif
EndIf
EndIf
__aCtb := {}
AF012Static()
Return
Os seguintes usuário(s) disseram Obrigado: aramissf1997
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- AdvPL x MVC
- Colocar Browser no MODELO 3 ()
Tempo para a criação da página:0.105 segundos