PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
SetFocus em um campo em tela MVC
Versão:
.
Plataforma:
.
Complemento:
DB:
.
Complemento:
LinkedIn
Mensagem do Enviar e-mail Abrir o Perfil do usuário LEXX LEXX em 21/02/2018, 17:58 h
Local: MG  Registro: 01/07/2015  Postagens: 87
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?

Mensagem do Enviar e-mail Abrir o Perfil do usuário LEXX LEXX em 23/02/2018, 15:51 h
Local: MG  Registro: 01/07/2015  Postagens: 87

Boa tarde, ninguém aqui manja de trabalhar com objetos em mvc?
Não queria recorrer a outras linguagens, pra fazer isso.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário JALBERTO JALBERTO em 23/02/2018, 16:58 h
Local: RS  Registro: 20/08/2009  Postagens: 167
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

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário RUBEM_MN2 RUBEM_MN2 em 24/02/2018, 17:38 h
Local: SC  Registro: 16/05/2017  Postagens: 22
Boa tarde.

Com gatilho você consegue fazer.

Mensagem do Enviar e-mail Abrir o Perfil do usuário LEXX LEXX em 26/02/2018, 15:48 h
Local: MG  Registro: 01/07/2015  Postagens: 87
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.

Mensagem do Enviar e-mail Abrir o Perfil do usuário THEEXIE THEEXIE em 06/01/2020, 15:48 h
Local: RJ  Registro: 30/09/2014  Postagens: 33
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?



      

Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal