Problema com Foco

Delphi

01/12/2004

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:

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

Marco Salles

Curtidas 0

Respostas

Objetivacreator

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.


GOSTEI 0
Marco Salles

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

Marco Salles

01/12/2004

sobe.....


GOSTEI 0
Marco Salles

Marco Salles

01/12/2004

sobe


GOSTEI 0
Gandalf.nho

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].


GOSTEI 0
POSTAR