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 |