Imprimi Página | Fechar janela

Pegar dados Selecionados no fwmBrowse

Impresso de: Helpfacil - Portal do conhecimento
Nome do Forum: ADVPL
Descrição do Forum: Dúvidas sobre a programação em ADVPL
URL:http://www.helpfacil.com.br/display_topic_threads.asp?ForumID=1&TopicID=43740
Data da Impressão: quarta-feira, 24 de abril de 2024 at 00:55


Topico: Pegar dados Selecionados no fwmBrowse

Postado por: WANDERSONW
Assunto: Pegar dados Selecionados no fwmBrowse
Data Postagem: quinta-feira, 12 de agosto de 2021 at 08:39

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



Respostas:

Postado Por: LABAMBAMOG
Data Postagem: quarta-feira, 18 de agosto de 2021 at 19:24

Cara, acho que da pra melhorar um pouco o seu código.
Nesse trecho você gasta o dobro do tempo para popular o alias TRB, pois lê todos os registros do alias TMPDIRETORES e depois todos os itens do array.

    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

Tente algo assim:

    While ! TMPDIRETORES->( EOF() )

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

      If RecLock("TRB",.T.)
               TRB->TR_Diret := aValores[Len(aValores),2]
               TRB->TR_Natur := aValores[Len(aValores),3]
               TRB->TR_DtCad := sTod(aValores[Len(aValores),4])
               TRB->TR_Venci := sTod(aValores[Len(aValores),5])
               TRB->TR_Valor := (aValores[Len(aValores),6])
               TRB->TR_Descr := aValores[Len(aValores),7]
               MsUnLock()
          Endif

          TMPDIRETORES->( dbSkip() )
     ENDDO


Parece que você ainda está desenvolvendo o código, certo?
A BtnInclui() e a BtnAlter() chamam a mesma InseCpos(), creio que haja uma "AltCpos" com a instrução de UPDATE, mas vamos ao quadro de diálogo.

Não vejo por que você precisa de duas rotinas aqui:

AADD(aRotina, {"Incluir"            , "U_BtnInclui"        , 0, 3, 0, Nil })
AADD(aRotina, {"Alterar"            , "U_BtnAlter"        , 0, 4, 0, Nil })
     
Basta apenas uma com um parâmetro e analisa-lo na montagem do quadro de diálogo.
Como você diz que a inclusão funciona, farei algumas alterações a partir dela, mas perdoe-me se houver algum erro de digitação, pois estou respondendo pelo celular.

AADD(aRotina, {"Incluir"            , "U_ShowQd("I")"        , 0, 3, 0, Nil })
AADD(aRotina, {"Alterar"            , "U_ShowQd("A")"        , 0, 4, 0, Nil })


User Function ShowQd(cOpc)

     Private cCpoDire   := Space(20)
     Private cCpoNatu   := Space(15)
     Private cmCpoDesc := Space(99)
     Private dCpoDtCa   := dDataBase
     Private dCpoDtvenc := dDataBase+30
     Private nCpoValo   := 0
     Private cTitulo    := " Inclusão de Dados "
     
     SetPrv("oDlg","oSay1","oSay2","oSay3","oSay4","oSay5","oSay6","cCpoDire","cCpoNatu","dCpoDtCa","dCpoDtvenc")
     SetPrvt("mCpoDesc","oGet1","oBtn1")

     If cOpc == "A"     //Alteração
     cCpoDire   := TRB->TR_Diret
          cCpoNatu   := TRB->TR_Natur
          cmCpoDesc := TRB->TR_Descr
          dCpoDtCa   := TRB->TR_DtCad
          dCpoDtvenc := TRB->TR_Venci
          nCpoValo   := TRB->TR_Valor
          cTitulo    := " Alteração de Dados "
     Endif

     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,{||iif(cOpc == "I",InseCpos(),AltCpos())}, 40,10,,,.F.,.T.,.F.,,.F.,,,.F. )

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

Boa sorte, t+



     



Postado Por: LABAMBAMOG
Data Postagem: quinta-feira, 19 de agosto de 2021 at 08:37

Ah, na linha do oBtn1, você pode altera-la enviando o mesmo parâmetro que sugeri e trata-lo na InseCpos. A linha ficaria assim:
oBtn1      := TButton():New( 004,260,"Gravar" ,oDlg,{||InseCpos(cOpc)}, 40,10,,,.F.,.T.,.F.,,.F.,,,.F. )

T+






Imprimir Página | Fechar Janela