Abrir tela de alteração apos selecionar item no fwmbrowse

Principal Fóruns Protheus AdvPL Abrir tela de alteração apos selecionar item no fwmbrowse

Visualizando 1 post (de 1 do total)
  • Autor
    Posts
  • #7952
    WANDERSONWFS
    Participante

    Bom dia Turma,

    Estou precisando da ajuda de vocês para concluir um fonte que comecei a fazer, ele cria a FWMBROWSE usando uma tabela temporária pois esta tabela não faz parte das tabelas disponíveis no Protheus mas utiliza a mesma base de dados. A Inclusão já está funcionando corretamente agora a Alteração é onde estou tendo problemas e preciso da ajuda de voce se possível. Quando selecione um registro no browse e seleciono a opção Alterar, ele não esta me trazendo os dados selecionado no browse, estou disponibilizando o fonte caso alguém possa me ajudar nesta questão.

    Fonte:

    #Include ‘Totvs.ch‘
    #Include ‘Topconn.ch‘

    User Function VSPFIN29()
    Local cArqTrb, cIndice1, cIndice2, cIndice3
    Local i
    Private oBrowse
    Private aRotina := MenuDef()
    Private cCadastro := “DIRETORES”
    Private aCampos := {}, aSeek := {}, aDados := {}, aValores := {}, aFieFilter := {}

    //Array contendo os campos da tabela temporária
    AAdd(aCampos,{“TR_ST” , “C” , 01 , 0})
    AAdd(aCampos,{“TR_Diret”, “C” , 20 , 0})
    AAdd(aCampos,{“TR_Natur”, “C” , 10 , 0})
    AAdd(aCampos,{“TR_DtCad”, “D” , 08 , 0})
    AAdd(aCampos,{“TR_Venci”, “D” , 08 , 0})
    AAdd(aCampos,{“TR_Valor”, “N” , 14 , 2})
    AAdd(aCampos,{“TR_Descr”, “C” , 99 , 0})

    //Antes de criar a tabela, verificar se a mesma já foi aberta
    If (Select(“TRB”) <> 0)
    dbSelectArea(“TRB”)
    TRB->(dbCloseArea ())
    Endif

    //Criar tabela temporária
    cArqTrb := CriaTrab(aCampos,.T.)

    //Definir indices da tabela
    cIndice1 := Alltrim(CriaTrab(,.F.))
    cIndice2 := cIndice1
    cIndice3 := cIndice1
    cIndice1 := Left(cIndice1,5)+Right(cIndice1,2)+”A”
    cIndice2 := Left(cIndice2,5)+Right(cIndice2,2)+”B”
    cIndice3 := Left(cIndice3,5)+Right(cIndice3,2)+”C”
    If File(cIndice1+OrdBagExt())
    FErase(cIndice1+OrdBagExt())
    EndIf
    If File(cIndice2+OrdBagExt())
    FErase(cIndice2+OrdBagExt())
    EndIf
    If File(cIndice3+OrdBagExt())
    FErase(cIndice3+OrdBagExt())
    EndIf

    //Criar e abrir a tabela
    dbUseArea(.T.,,cArqTrb,”TRB”,Nil,.F.)

    /*Criar indice*/
    IndRegua(“TRB”, cIndice1, “TR_Diret”,,, “Indice ID…”)
    IndRegua(“TRB”, cIndice2, “TR_Natur”,,, “Indice Login…”)
    IndRegua(“TRB”, cIndice3, “TR_DtCad”,,, “Indice Nome…”)
    dbClearIndex()
    dbSetIndex(cIndice1+OrdBagExt())
    dbSetIndex(cIndice2+OrdBagExt())
    dbSetIndex(cIndice3+OrdBagExt())

    /*popular a tabela*/
    cQuery:=‘ SELECT * FROM FLUXO_DIRETORES‘
    TcQuery cQuery New Alias “TMPDIRETORES”

    While ! TMPDIRETORES->( EOF() )

    aAdd(avalores,{‘a‘,TMPDIRETORES->DIRETOR,TMPDIRETORES->NATUREZA,TMPDIRETORES->DTCADASTRO,TMPDIRETORES->VENCIMENTO,TMPDIRETORES->VALOR,TMPDIRETORES->DESCRICAO})

    TMPDIRETORES->( dbSkip() )
    ENDDO

    For i:= 1 to len(aValores)
    If RecLock(“TRB”,.t.)
    TRB->TR_Diret := aValores[i,2]
    TRB->TR_Natur := aValores[i,3]
    TRB->TR_DtCad := sTod(aValores[i,4])
    TRB->TR_Venci := sTod(aValores[i,5])
    TRB->TR_Valor := (aValores[i,6])
    TRB->TR_Descr := aValores[i,7]

    // TRB->TR_POS := i
    MsUnLock()
    Endif
    Next
    dbSelectArea(“TRB”)
    TRB->(DbGoTop())
    //Campos que irão compor o combo de pesquisa na tela principal
    Aadd(aSeek,{“Diretor” , {{“”,”C”,06,0, “TR_Diret” ,”@!”}}, 1, .T. } )
    Aadd(aSeek,{“Natureza” , {{“”,”C”,20,0, “TR_Natur”,”@!”}}, 2, .T. } )
    Aadd(aSeek,{“Dta.Cadastro” , {{“”,”D”,08,0, “TR_DtCad” ,”@!”}}, 3, .T. } )

    //Campos que irão compor a tela de filtro
    Aadd(aFieFilter,{“TR_Diret” , “Diretor” , “C”, 10, 0,”@!”})
    Aadd(aFieFilter,{“TR_Natur” , “Natureza” , “C”, 10, 0,”@!”})
    Aadd(aFieFilter,{“TR_DtCad” , “Dta.Cadastro” , “D”, 08, 0,”@!”})

    oBrowse := FWmBrowse():New()
    oBrowse:SetAlias( “TRB” )
    oBrowse:SetDescription( cCadastro )
    oBrowse:SetSeek(.T.,aSeek)
    oBrowse:SetTemporary(.T.)
    oBrowse:SetLocate()
    oBrowse:SetUseFilter(.T.)
    oBrowse:SetDBFFilter(.T.)
    oBrowse:SetFilterDefault( “” ) //Exemplo de como inserir um filtro padrão >>> “TR_ST == ‘A‘”
    oBrowse:SetFieldFilter(aFieFilter)
    oBrowse:DisableDetails()
    // Seta o Array de dados para a browse
    oBrowse:SetArray(aValores)

    //Legenda da grade, é obrigatório carregar antes de montar as colunas
    oBrowse:AddLegend(“TR_ST==‘A‘”,”GREEN” ,”Grupo Administradores”)
    oBrowse:AddLegend(“TR_ST==‘C‘”,”BLUE” ,”Grupo Contábil”)
    oBrowse:AddLegend(“TR_ST==‘R‘”,”RED” ,”Grupo RH”)

    //Detalhes das colunas que serão exibidas
    oBrowse:SetColumns(MontaColunas(“TR_Diret” ,”Diretor” ,01,”@!”,0,010,0))
    oBrowse:SetColumns(MontaColunas(“TR_Natur” ,”Natureza” ,02,”@!”,1,080,0))
    oBrowse:SetColumns(MontaColunas(“TR_DtCad” ,”Dt.Cadastro” ,03,”D” ,1,008,0))
    oBrowse:SetColumns(MontaColunas(“TR_Venci” ,”Vencimento” ,04,”D” ,1,008,0))
    oBrowse:SetColumns(MontaColunas(“TR_Valor” ,”Valor” ,05,”N” ,1,10,2))
    oBrowse:SetColumns(MontaColunas(“TR_Descr” ,”Descricao” ,06,”@!”,1,100,0))

    oBrowse:Activate()
    If !Empty(cArqTrb)
    Ferase(cArqTrb+GetDBExtension())
    Ferase(cArqTrb+OrdBagExt())
    cArqTrb := “”
    TRB->(DbCloseArea())
    delTabTmp(‘TRB‘)
    dbClearAll()
    Endif

    return(Nil)
    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 +”}”)
    EndIf

    aColumn := {cTitulo,bData,,cPicture,nAlign,nSize,nDecimal,.F.,{||.T.},.F.,{||.T.},NIL,{||.T.},.F.,.F.,{}}
    Return {aColumn}
    Static Function MenuDef()
    Local aArea := GetArea()
    Local aRotina := {}
    Local aRotina1 := {}

    AADD(aRotina1, {“Consulta Produto” , “MATC050()” , 0, 6, 0, Nil })
    AADD(aRotina1, {“Legenda” , “U_EXEM992L” , 0,11, 0, Nil })

    AADD(aRotina, {“Pesquisar” , “PesqBrw” , 0, 1, 0, .T. })
    AADD(aRotina, {“Visualizar” , “U_EXEM992I” , 0, 2, 0, .F. })
    AADD(aRotina, {“Incluir” , “U_BtnInclui” , 0, 3, 0, Nil })
    AADD(aRotina, {“Alterar” , “U_BtnAlter” , 0, 4, 0, Nil })
    AADD(aRotina, {“Excluir” , “U_EXEM992I” , 0, 5, 3, Nil })

    AADD(aRotina, {“Mais ações…” , aRotina1 , 0, 4, 0, Nil } )

    Return( aRotina )

    User Function BtnInclui()

    Private cCpoDire := Space(20)
    Private cCpoNatu := Space(15)
    Private cmCpoDesc
    Private dCpoDtCa := CtoD(” “)
    Private dCpoDtvenc := CtoD(” “)
    Private nCpoValo := 0
    Private cTitulo := ” Inclusão de Dados ”

    SetPrvt(“oDlg”,”oSay1″,”oSay2″,”oSay3″,”oSay4″,”oSay5″,”oSay6″,”cCpoDire”,”cCpoNatu”,”dCpoDtCa”,”dCpoDtvenc”)
    SetPrvt(“mCpoDesc”,”oGet1″,”oBtn1″)

    oDlg := MSDialog():New( 138,1569,485,2259,”Inclusão – Diretor”,,,.F.,,,,,,.T.,,,.T. )
    U_VSPTIT(cTitulo)
    oSay1 := TSay():New( 036,008,{||”Diretor”},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,050,010)
    oSay2 := TSay():New( 056,008,{||”Natureza”},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,050,010)
    oSay3 := TSay():New( 076,008,{||”Data Cadastro”},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,050,010)
    oSay4 := TSay():New( 100,008,{||”Data Vencimento”},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,050,010)
    oSay5 := TSay():New( 120,008,{||”Valor”},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,050,010)
    oSay6 := TSay():New( 076,144,{||”Descricao”},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,032,008)

    oCpoDire := TGet():New( 036,068,{|u| If(PCount()>0,cCpoDire:=u,cCpoDire)},oDlg,176,013,‘‘,,CLR_BLACK,CLR_WHITE,,,,.T.,””,,,.T.,.F.,,.F.,.F.,””,”cCpoDire”,,)
    oCpoNatu := TGet():New( 056,068,{|u| If(PCount()>0,cCpoNatu:=u,cCpoNatu)},oDlg,065,013,‘‘,,CLR_BLACK,CLR_WHITE,,,,.T.,””,,,.T.,.F.,,.F.,.F.,”SED”,”cCpoNatu”,,)
    oCpoDtCa := TGet():New( 076,068,{|u| If(PCount()>0,dCpoDtCa:=u,dCpoDtCa)},oDlg,065,013,‘‘,,CLR_BLACK,CLR_WHITE,,,,.T.,””,,,.T.,.F.,,.F.,.F.,””,”dCpoDtCa”,,)
    oCpoDtvenc := TGet():New( 100,068,{|u| If(PCount()>0,dCpoDtvenc:=u,dCpoDtvenc)},oDlg,065,013,‘‘,,CLR_BLACK,CLR_WHITE,,,,.T.,””,,,.T.,.F.,,.F.,.F.,””,”dCpoDtvenc”,,)
    oCpoValo := TGet():New( 120,068,{|u| If(PCount()>0,nCpoValo:=u,nCpoValo)},oDlg,065,013,‘999,999,999.99‘,,CLR_BLACK,CLR_WHITE,,,,.T.,””,,,.F.,.F.,,.F.,.F.,””,”nCpoValo”,,)
    oCpoDesc := TMultiGet():New( 088,144,{|u| If(PCount()>0,cmCpoDesc:=u,cmCpoDesc)},oDlg,188,044,,,CLR_BLACK,CLR_WHITE,,.T.,””,,,.F.,.F.,.F.,,,.F.,, )
    oGet1 := TGet():New( 056,136,,oDlg,200,013,‘‘,,CLR_BLACK,CLR_HGRAY,,,,.T.,””,,,.T.,.F.,,.F.,.F.,””,””,,)
    oGet1:Disable()
    oBtn1 := TButton():New( 004,260,”Incluir” ,oDlg,{||InseCpos()}, 40,10,,,.F.,.T.,.F.,,.F.,,,.F. )

    oDlg:Activate(,,,.T.)
    Return

    Static Function InseCpos()

    cIns := ” INSERT INTO FLUXO_DIRETORES VALUES(‘”+cCpoDire+”‘,‘”+cCpoNatu+”‘,‘”+Dtos(dCpoDtCa)+”‘,‘”+Dtos(dCpoDtvenc)+”‘,‘”+cValToChar(nCpoValo)+”‘,‘”+cmCpoDesc+”‘)”
    TcSqlExec( cIns )
    FWAlertSuccess( “Registro Gravado com Sucesso!!!”, “Novo Registro”)
    LimpaCpo()
    Return

    Static Function LimpaCpo()
    cCpoDire :=‘‘
    cCpoNatu :=‘‘
    dCpoDtCa :=‘‘
    dCpoDtvenc:=‘‘
    nCpoValo := 0
    cmCpoDesc:=‘‘
    oDlg:Refresh()

    Return

    User Function BtnAlter()

    Local Ivsp:= 0

    For Ivsp:= 1 To Len(aValores)
    cCpoDire :=aValores[Ivsp,1]
    cCpoNatu :=aValores[Ivsp,2]
    cmCpoDesc :=aValores[Ivsp,3]
    dCpoDtCa :=aValores[Ivsp,4]
    dCpoDtvenc :=aValores[Ivsp,5]
    nCpoValo :=aValores[Ivsp,6]
    Next

    Private cTitulo := ” Alteração de Dados ”

    SetPrvt(“oDlg”,”oSay1″,”oSay2″,”oSay3″,”oSay4″,”oSay5″,”oSay6″,”cCpoDire”,”cCpoNatu”,”dCpoDtCa”,”dCpoDtvenc”)
    SetPrvt(“mCpoDesc”,”oGet1″,”oBtn1″)

    oDlg := MSDialog():New( 138,1569,485,2259,”Inclusão – Alteração”,,,.F.,,,,,,.T.,,,.T. )
    U_VSPTIT(cTitulo)
    oSay1 := TSay():New( 036,008,{||”Diretor”},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,050,010)
    oSay2 := TSay():New( 056,008,{||”Natureza”},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,050,010)
    oSay3 := TSay():New( 076,008,{||”Data Cadastro”},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,050,010)
    oSay4 := TSay():New( 100,008,{||”Data Vencimento”},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,050,010)
    oSay5 := TSay():New( 120,008,{||”Valor”},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,050,010)
    oSay6 := TSay():New( 076,144,{||”Descricao”},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,032,008)

    oCpoDire := TGet():New( 036,068,{|u| If(PCount()>0,cCpoDire:=u,cCpoDire)},oDlg,176,013,‘‘,,CLR_BLACK,CLR_WHITE,,,,.T.,””,,,.T.,.F.,,.F.,.F.,””,”cCpoDire”,,)
    oCpoNatu := TGet():New( 056,068,{|u| If(PCount()>0,cCpoNatu:=u,cCpoNatu)},oDlg,065,013,‘‘,,CLR_BLACK,CLR_WHITE,,,,.T.,””,,,.T.,.F.,,.F.,.F.,”SED”,”cCpoNatu”,,)
    oCpoDtCa := TGet():New( 076,068,{|u| If(PCount()>0,dCpoDtCa:=u,dCpoDtCa)},oDlg,065,013,‘‘,,CLR_BLACK,CLR_WHITE,,,,.T.,””,,,.T.,.F.,,.F.,.F.,””,”dCpoDtCa”,,)
    oCpoDtvenc := TGet():New( 100,068,{|u| If(PCount()>0,dCpoDtvenc:=u,dCpoDtvenc)},oDlg,065,013,‘‘,,CLR_BLACK,CLR_WHITE,,,,.T.,””,,,.T.,.F.,,.F.,.F.,””,”dCpoDtvenc”,,)
    oCpoValo := TGet():New( 120,068,{|u| If(PCount()>0,nCpoValo:=u,nCpoValo)},oDlg,065,013,‘999,999,999.99‘,,CLR_BLACK,CLR_WHITE,,,,.T.,””,,,.F.,.F.,,.F.,.F.,””,”nCpoValo”,,)
    oCpoDesc := TMultiGet():New( 088,144,{|u| If(PCount()>0,cmCpoDesc:=u,cmCpoDesc)},oDlg,188,044,,,CLR_BLACK,CLR_WHITE,,.T.,””,,,.F.,.F.,.F.,,,.F.,, )
    oGet1 := TGet():New( 056,136,,oDlg,200,013,‘‘,,CLR_BLACK,CLR_HGRAY,,,,.T.,””,,,.T.,.F.,,.F.,.F.,””,””,,)
    oGet1:Disable()
    oBtn1 := TButton():New( 004,260,”Incluir” ,oDlg,{||InseCpos()}, 40,10,,,.F.,.T.,.F.,,.F.,,,.F. )

    oDlg:Activate(,,,.T.)

    Return

Visualizando 1 post (de 1 do total)
  • Você deve fazer login para responder a este tópico.
Dúvida?