No caso estou tentando fazer uma tela de inclusão customizada, basicamente, como a tela de inclusão de "Metas de Vendas", porem não estou conseguindo fazer uma tabela que de para fazer alterações.
Necessariamente precisa ser o MsNewGetDados, mesmo que já esteja depreciada.
Me foi sugerido tentar fazer no "evento" do clique do botão enter, quando estiver encima da tabela, porem apenas acho "SetKey()" usando VK_F12,VK_F8 e assim vai. E mesmo que eu consiga saber como executar um comando ao clique do botão enter, eu desconheço a variável que deve ser alterada para permitir digitação na linha, muito menos o que possui o conteúdo da linha.
Vou colocar em anexo um print da minha tela personalizada.
Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.
Patrick, bom dia.
Verifique se a utilizando MVC te facilite a construção desta rotina que você precisa desenvolver.
Abraço,
O pior é que me foi passado para tentar não utilizar MVC para poder isto em outra tela 
Se eu entendi direito, vc quer usar essa tela em outra tela, correto? o MVC dá pra fazer isso.
Eu gostaria de utilizar esse MsNewGetDados dentro de um MSDIALOG, porem, assim como o anexo mostra (que achei que já tinha anexado…não sei porque não estava aparecendo), a tabela aparece mas não consigo alterar as linhas. Já até tentei utilizar uma função chamada “SetEditLine”, mas sem existo.
Patrick, acho que o anexo não veio, não to vendo ele aqui na sua pergunta.
Patrick, no link abaixo tem um exemplo bem completo de msgetnewdados dentro de uma msdialog com linhas editáveis e que executa ações em cima dos dados da acols:
https://thiagocoimbra.com.br/2014/06/09/exemplo-completo-msnewgetdados/
Sua principal dúvida inicial, de deixar editável é o parâmetro do comando de criação do objeto que define que as linhas poderão ser inclusas, alteradas e editadas como destaco abaixo do exemplo do link:
NOPC := GD_INSERT + GD_UPDATE + GD_DELETE // Definições de inserir, alterar e deletar linhas
oBrw1 := MsNewGetDados():New( 32 , 10, nBrwAlt, nBrwLarg, NOPC ,’Eval(bLinOk)’,’AllwaysTrue()’,”,{“PRODUTO”,”QUANT”,”ALMOX”,”ENDEREC”,”NUMSERI”},0,99,’AllwaysTrue()’,,’Eval(bfDeleta)’,oDlgSep,aHead1,aCols1)
Muito obrigado, na verdade o que estava faltando era o fato de no “aAlter” eu estava passando os campos sem estrar entre aspas.
Só vou agora trabalhar para descobrir o porque dele não estar associando esses campos aos campos do banco, pois ele poe um Search em todos os campos…mesmo eles não tendo sido configurados assim.
Obs. Ja aproveitando o gancho, como eu posso configurar a SXB? pois todos vem com LookUps e quando clico da erro na SXB. Estou no caminho errado ou tenho que adicionar algo la mesmo?
ah, a consulta é definida na montagem do aheader, no exemplo que tem no link o aheader é montado no array ahead1 indicado no comando de criação do msgetnewdados e populado pela função fheader…
destaco essa linha que adiciona uma coluna com consulta sb1 da sxb:
aAdd(aAux,{“Produto” ,”PRODUTO” ,”@!” ,TamSX3(“D3_COD”)[1] ,0 ,”Eval(bValProduto)” ,””,”C”,”SB1″,”” })
aí é só escolher e criar a consulta que precisa na sxb e indicar na montagem do seu aheader
lembrando que nesse exemplo o msgetnewdados só atualiza o acols1, para atualizar o banco com os dados digitados precisa fazer a função de validação de cada campo, ou de cada linha ou o botão confirma rodar o acols e atualizar os registros do banco com reclock
O pior é que é mega extenso, vou procurar pegar pedaços porque se não nao vou conseguir entregar isso nunca hahaha meu conhecimento em advpl não é la essas coisas
Mas muito obrigado, foi de grande valia!