Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 297 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Prezados, 

Estou com um problema curioso num form da minha aplicação em Lazarus, o problema é o seguinte:

Quando um determinado form de pesquisa é apresentado ao invés do foco ficar no Edit que receberia o valor para pesquisa o foco fica no SystemMenu da janela?!?!? Com isso, quando o usuário digita algum valor para ser consultado, o primeiro dígito é ignorado passando a entrar a partir do segundo. É como se o edit não estivesse com o foco, mas recebendo só depois que o usuário pressiona a primeira tecla, no caso o primeiro dígito, logo entra o valor incorreto. Ex.: para "1234" entra "234";

Sei que é o SystemMenu que está no foco, pois se teclo [Enter] assim que esse form abre, ele aparece. 

Já fiz diversos testes como:

Mostrar o componente ativo num label quando o form é aberto (o edit está lá);
Colocar EditX.setFocus no OnShow do Form;
Usar o EditX no ActiveControl do Form...

Nada disso resolveu.

Resolvi retirando a borda e colocando um botão para fechar, mas confesso que gostaria de entender o por que disso e como resolver sem esse quebra galho.

 


 

 

 

Postado
45 minutos atrás, Juliomar Marchetti disse:

ActiveControl do form está sentado em algo?

Sim. Está setado justamente no Edit, inclusive ele é o primeiro da lista de tabulação, deveria receber o foco e até recebe. O cursor fica dentro dele só que não pisca, entende? Já coloquei uns testes no OnEnter desse Edit, por exemplo, mudar a cor dele e muda! Também enviar um texto para um memo do tipo " Entrei no EditX", também acontece sugerindo que o edit recebeu o foco, porém a digitação do primeiro caractere não entra, apenas do segundo em diante.

Como disse na mensagem, se teclar [ENTER] abre aquele menu de sistema que fica no alto à esquerda da janela. 

Postado
7 minutos atrás, Juliomar Marchetti disse:

então ao que me parece é o  form que naõ está com o foco até teclar algo

Não. Me parece que o form está com o foco, porém no ícone SystemMenu (na borda), entende? 

quando teclo qualquer coisa, ai sim, o foco passa para o Edit. 

Fiz o seguinte para resolver: Deixei o form sem borda e criei uma borda superior com panel e um botão [X] fechar.
Com isso esse icone (SystemMenu) não aparece e o problema fica resolvido, pois o foco vai 100% para o referido Edit, mas entendo que isso é uma gambiarra e fiquei curioso para entender o fato. Não posso dizer para o usuário: "tecle alguma coisa antes de inserir valor..." 

 Esse menu da imagem abaixo aparece quando teclo [Enter] como se a borda do form estivesse focada!

img1.png

  • Solution
Postado
Em 29/01/2024 at 11:55, edjal disse:

Não. Me parece que o form está com o foco, porém no ícone SystemMenu (na borda), entende? 

quando teclo qualquer coisa, ai sim, o foco passa para o Edit. 

Fiz o seguinte para resolver: Deixei o form sem borda e criei uma borda superior com panel e um botão [X] fechar.
Com isso esse icone (SystemMenu) não aparece e o problema fica resolvido, pois o foco vai 100% para o referido Edit, mas entendo que isso é uma gambiarra e fiquei curioso para entender o fato. Não posso dizer para o usuário: "tecle alguma coisa antes de inserir valor..." 

 Esse menu da imagem abaixo aparece quando teclo [Enter] como se a borda do form estivesse focada!

img1.png

Tira o systemmenu do form, as vezes pode ser alguma sujeira no form, as vezes teria que refazer esse form

  • Este tópico foi criado há 297 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.