Problema com Foco
Bom Dia Amigos, estou com uma Imperfeição no Aplicativo.. Gostaria que se possível ,antes de responder , voces testasse o Projeto, Porque Pode nao ser tão simples quanto parece.... :lol: :lol:
Vamos Simplificar para a situação:
[b:3e1a9a3fc2]Tenho Um Edit e dois Butoes[/b:3e1a9a3fc2]
Esses Dois Butoes Tem a propriedade [b:3e1a9a3fc2]TabStop:=False;[/b:3e1a9a3fc2]
e esses tres componentes tem associados os seguintes eventos:
O Que esta ocorrendo , e ao sair do evento OnExit Do Edit1 o Botao1
Recebe o Foco... Mas quando o [b:3e1a9a3fc2]Butão1 Esta com o Foco , ao clicar no Butão2 o seu Evento OnClick Não e Disparado [/b:3e1a9a3fc2]:oops: :oops: :oops: Para Ele ser Disparado Tenho Que Clicar Duas Vezes :cry: :cry: :cry:
P:s :wink: Esta Imperfeição so acontece na primeira tentativa... A partir da segunda tentativa o Processo volta ao normal
Gostaria de corrigir esta imperfeição.. Gostaria tb que voces Entendessem, o que de fato esta ocorrendo...
Porque muitas das vezes , aqui , no forum , Não se chega a um concesso Por Dificuldade de Expressão de ambos os lados...
Valeu... :P :P :P :P
Vamos Simplificar para a situação:
[b:3e1a9a3fc2]Tenho Um Edit e dois Butoes[/b:3e1a9a3fc2]
Esses Dois Butoes Tem a propriedade [b:3e1a9a3fc2]TabStop:=False;[/b:3e1a9a3fc2]
e esses tres componentes tem associados os seguintes eventos:
procedure TForm1.Edit1Exit(Sender: TObject); begin showmessage(´Perdendo o foco´; Button1.TabStop:=True; Button2.TabStop:=True; Button1.SetFocus; end;
procedure TForm1.Button1Click(Sender: TObject); begin showmessage(´Executando o Procedimento do Botão1´); end;
procedure TForm1.Button2Click(Sender: TObject); begin showmessage(´Executando o Procedimento do Botão2´); end;
O Que esta ocorrendo , e ao sair do evento OnExit Do Edit1 o Botao1
Recebe o Foco... Mas quando o [b:3e1a9a3fc2]Butão1 Esta com o Foco , ao clicar no Butão2 o seu Evento OnClick Não e Disparado [/b:3e1a9a3fc2]:oops: :oops: :oops: Para Ele ser Disparado Tenho Que Clicar Duas Vezes :cry: :cry: :cry:
P:s :wink: Esta Imperfeição so acontece na primeira tentativa... A partir da segunda tentativa o Processo volta ao normal
Gostaria de corrigir esta imperfeição.. Gostaria tb que voces Entendessem, o que de fato esta ocorrendo...
Porque muitas das vezes , aqui , no forum , Não se chega a um concesso Por Dificuldade de Expressão de ambos os lados...
Valeu... :P :P :P :P
Marco Salles
Curtidas 0
Respostas
Objetivacreator
01/12/2004
Olá.
Fiz o exemplo conforme seus codigos enviados. o que pude perceber eh que como o tabStop esta falso, a tecla tab nao foca mais os botões.
A partir do momento que o tabstop passa a ser true, os eventos se perdem, mas no meu exemplo deu certo sim, o evento onexit deu certo se eu clicar no botao1, pois a tecla tab naum tem para onde ir pois esta falso, ai sim o evento OnExit eh acionado e os eventos dos dois botões funcionam perfeitamente com apenas um click.
Bom naum se ajudei muito mas se vc quizer evitar o click destes botões e somente libera-lo apos o evento OnExit do Edit1. Tente fazer o seguinte.
Nas propriedades Enabled dos dois botões coloque FALSE.
no codigo do evento OnExit.
Button1.Enabled := not Button1.Enabled;
Button2.Enabled := not Button2.Enabled;
O que acontece eh que ha um inversor NOT que inverte a propriedade Enabled. Só isto.
Este inversor faz parte da tabela verdade.
Espero que eu tenha ajudado, mas se naum encontrar resposta, mande um e-mail, para eu tentar te ajudar.
´O conhecimento humando pertence ao mundo!´.
Objetiva Creator.
Fiz o exemplo conforme seus codigos enviados. o que pude perceber eh que como o tabStop esta falso, a tecla tab nao foca mais os botões.
A partir do momento que o tabstop passa a ser true, os eventos se perdem, mas no meu exemplo deu certo sim, o evento onexit deu certo se eu clicar no botao1, pois a tecla tab naum tem para onde ir pois esta falso, ai sim o evento OnExit eh acionado e os eventos dos dois botões funcionam perfeitamente com apenas um click.
Bom naum se ajudei muito mas se vc quizer evitar o click destes botões e somente libera-lo apos o evento OnExit do Edit1. Tente fazer o seguinte.
Nas propriedades Enabled dos dois botões coloque FALSE.
no codigo do evento OnExit.
Button1.Enabled := not Button1.Enabled;
Button2.Enabled := not Button2.Enabled;
O que acontece eh que ha um inversor NOT que inverte a propriedade Enabled. Só isto.
Este inversor faz parte da tabela verdade.
Espero que eu tenha ajudado, mas se naum encontrar resposta, mande um e-mail, para eu tentar te ajudar.
´O conhecimento humando pertence ao mundo!´.
Objetiva Creator.
GOSTEI 0
Marco Salles
01/12/2004
Fiz o exemplo conforme seus codigos enviados
beleza
o que pude perceber eh que como o tabStop esta falso, a tecla tab nao foca mais os botões.
é para não focar mesmo....
A partir do momento que o tabstop passa a ser true, os eventos se perdem, mas no meu exemplo deu certo sim, o evento onexit deu certo se eu clicar no botao1, pois a tecla tab naum tem para onde ir pois esta falso, ai sim o evento OnExit eh acionado e os eventos dos dois botões funcionam perfeitamente com apenas um click
. [b:be59930de1]Nao entendi a sua colocação [/b:be59930de1]:cry: :cry: :cry:
Vamos Voltar um pouquinho acima.. Na minha Primeira citação
O Que esta ocorrendo , e ao sair do evento OnExit Do Edit1 o Botao1
Recebe o Foco... Isto é fato
[b:be59930de1]Mas quando o Butão1 Esta com o Foco , ao clicar no Butão2 o seu Evento OnClick Não e Disparado[/b:be59930de1] :arrow: :arrow: Isto eu não to entendendo... Ja que agora todos os dois botoes Tem a propriedade [b:be59930de1]TabStop cetado em true[/b:be59930de1].. Porque que o evento do botão2 Não é disparado quando se clica nele :?: :?: :?: :cry: :cry: :cry:
[b:be59930de1]Para Ele ser Disparado Tenho Que Clicar Duas Vezes [/b:be59930de1]
Isto para mim é uma imperfeição , e gostaria de tentar entender o que esta de fato ocorrendo :?: :?: :?: :cry: :cry: :cry:
P:s [b:be59930de1] Esta Imperfeição so acontece na primeira tentativa[/b:be59930de1]... A partir da segunda tentativa o Processo volta ao normal
:idea: :idea: :idea: Para voltar a[b:be59930de1] testar o Problema [/b:be59930de1]tem que finalizar o Aplicativo e Roda-lo Novamente....
GOSTEI 0
Marco Salles
01/12/2004
sobe.....
GOSTEI 0
Marco Salles
01/12/2004
sobe
GOSTEI 0
Gandalf.nho
01/12/2004
[b:826310f829][color=red:826310f829]Notificação de Infração às Regras de Conduta :[/color:826310f829][/b:826310f829]
O recurso de usar ´SOBE´ ou similares para pôr de novo o tópico em evidência deve ser limitado no máximo a uma vez por dia.
Para maiores esclarecimentos pode mandar-me uma [url=http://delphiforum.icft.com.br/forum/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].
O recurso de usar ´SOBE´ ou similares para pôr de novo o tópico em evidência deve ser limitado no máximo a uma vez por dia.
Para maiores esclarecimentos pode mandar-me uma [url=http://delphiforum.icft.com.br/forum/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].
GOSTEI 0