Imprimi Página | Fechar janela |
SetFocus em um campo em tela MVC 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=41705 Data da Impressão: terça-feira, 23 de abril de 2024 at 05:12 Topico: SetFocus em um campo em tela MVC Postado por: LEXX Assunto: SetFocus em um campo em tela MVC Data Postagem: quarta-feira, 21 de fevereiro de 2018 at 17:58 Boa tarde, Estou criando uma rotina em MVC, que tera 2 tabelas (cabeçalho e itens). oView:AddField("vfZAD" , oStruZAD , "mfZAD") // field oView:AddGrid("vgZAE" , oStruZAE , "mgZAE") // grid No FIELD tem apenas 1 campo habilitado para digitar, e quando é digitado, ele vai no grid preenche as informações de acordo com o que foi digitado nesse campo, ele volta no campo e limpa o que foi digitado mas o foco permanece lá no GRID. Como faço para tirar o foco do GRID e voltar ele para o campo de cima novamente? Na criação da ViewDef usei o SetFieldAction. oView:SetFieldAction("ZAD_CODBAR", { |oView, cIDView, cField, xValue| addLinha(oView, cIDView, cField, xValue) } ) ////////////////////////// static function addLinha(oView, cIDView, cField, xValue) ////////////////////////// local oMZAD := oModel:GetModel(‘mfZAD‘) local oMZAE := oModel:GetModel(‘mgZAE‘) if len(xValue) <> 24 Alert("Atenção, o código de barras deverá ter 24 dígitos, favor verificar.") return endif // vai pra última linha oMZAE:GoLine(oMZAE:Length()) // preenche os campos oMZAE:SetValue(‘ZAE_CODBAR‘,xValue) oMZAE:SetValue(‘ZAE_PROD‘,POSICIONE("SB1",5,xFilial("SB1")+SubStr(xValue,1,14),"B1_COD")) oMZAE:SetValue(‘ZAE_DESC‘,POSICIONE("SB1",5,xFilial("SB1")+SubStr(xValue,1,14),"B1_DESC")) oMZAE:SetValue(‘ZAE_NLOTE‘,SubStr(xValue,15,5)) oMZAE:SetValue(‘ZAE_QUANT‘,1) oMZAE:SetValue(‘ZAE_ARMO‘,‘PR‘) oMZAE:SetValue(‘ZAE_ARMD‘,‘EX‘) // adiciona um alinha oMZAE:AddLine() // limpa o campo código de barras para ler novamente oMZAD:SetValue(‘ZAD_CODBAR‘,‘‘) // aqui, preciso voltar o focus para o campo do código de barras novamente para continuar fazendo a leitura. Joguei no google, achei esse site. https://pt.stackoverflow.com/questions/150088/como-setar-o-foco-em-um-componente-do-mvc Tentei fazer assim: local oCodBar := oView:GetViewObject(cIDView) oCodBar:SetFocus() Mas deu erro, falando que o oCodBar não é um objeto. Alguma ideia? Respostas: Postado Por: LEXX Data Postagem: sexta-feira, 23 de fevereiro de 2018 at 15:51 Boa tarde, ninguém aqui manja de trabalhar com objetos em mvc? Não queria recorrer a outras linguagens, pra fazer isso. Postado Por: JALBERTO Data Postagem: sexta-feira, 23 de fevereiro de 2018 at 16:58 Trabalho com MVC mas nunca precisei mudar o foco de um campo. Terá que fazer alguns outros testes, como por exemplo, adicionar um gatilho para que o sistema carregue os dados no grid e também "forçe" o sistema a ficar no campo ( talvez fazer com que o usuário possa sair do campo somente com ele vazio ). Deve ter alguma maneira de contornar o sistema pois parece que não tem como mudar o foco. Jorge Alberto Skype: jalberto2004 Postado Por: RUBEM_MN2 Data Postagem: sábado, 24 de fevereiro de 2018 at 17:38 Boa tarde. Com gatilho você consegue fazer. Postado Por: LEXX Data Postagem: segunda-feira, 26 de fevereiro de 2018 at 15:48 Com gatilho não funciona. Já tentei criar gatilho nesse campo apontando pra ele mesmo e limpando o campo, ele limpa mas o foco não fica nele. Postado Por: THEEXIE Data Postagem: segunda-feira, 6 de janeiro de 2020 at 15:48 Vou desenterrar esse post. Estou com o mesmo problema também achei o post do stackoverflow mas não tive sucesso. Alguém conseguiu resolver isso? |
Imprimir Página | Fechar Janela |