como fazer um quot;IF btnCancelar.focused THENquot; (Speed

Delphi

28/06/2004

Olá pessoal,

Estou usando SpeedButtons na minha aplição, mas estou tendo problemas no evento OnExit dos meus edits... por ex.

if btnCancelar.focused then abort;
(cancela todo processo)

Eu acho que nao existe FOCUSED nos SpeedButton, mas tem outra solução ??

Valew


Omar Cury

Omar Cury

Curtidas 0

Respostas

Cabelo

Cabelo

28/06/2004

Caro colega..

exatamente isso ..

Este tipó de botão não recebe foco.. Por isso vc não consegue achar o .focused, pq vc não usa o evento onClick para isso..

senão conseguir, vc pode utilizar o evento onmousemove..

espero ter ajudado..

sem mais

Cabelo


GOSTEI 0
Omar Cury

Omar Cury

28/06/2004

Eu fiz desse jeito e nao funcionou:

procedure TForm1.Edit1Exit(Sender: TObject);
begin
if SpeedButton1.Click then abort;
end;

erro: Type of expression must be BOOLEAN

entaum, tentei

if SpeedButton1.Click = true then abort;

tbem nao funcionou. :(


GOSTEI 0
Cabelo

Cabelo

28/06/2004

Colega..

Não entendi ainda sua dúvida..

na verdade eu sugerí que vc colocasse no evento OnClick do SpeedButton o abort.

Não estou entendendo onde vc quer chegar.

procedure TForm1.Edit1Exit(Sender: TObject);
begin
if SpeedButton1.Click then abort;
end;

Aqui vc está indicando que quando vc for sair do Edit1, verificar se o botão SpeedButton está clicado??????? Não entendi..

Acho que vc está confundindo os eventos..

Na verdade o quê vc quer fazer, me explique de forma sem estruturas, para que eu possa te ajudar..

Cabelo


GOSTEI 0
Omar Cury

Omar Cury

28/06/2004

Nao estou confundindo eventos...


Eu simplismente quero verificar se o botao cancelar foi clicado antes de fazer todo o processo no evento OnExit dos edits (como exemplos citados acima) !!


GOSTEI 0
Cabelo

Cabelo

28/06/2004

Agora ficou bem mais simples..

vc pode utilizar uma variável boolean;

na seção PUBLIC declare uma variável buttom_click : boolean;

depois disso no evento oncreate do form set ela para false;

buttom_click := false;

depois disso no evento onclick do speddbutton set ela para true;

buttom_click := true;

no evento onexit do EDIT1

if buttom_click then
begin
abort;
end;

acho que é isso q vc quer, mas mesmo assim acho que vc não está usando o código nos eventos certos.

pra que vc quer saber se o botão foi clicado antes de realizar o evento on exit do EDIT, se vc pode fazer isso no evento click do botão..?

espero ter ajudado..

Cabelo


GOSTEI 0
Paulo_amorim

Paulo_amorim

28/06/2004

Olá

cabelo, analisando seu código eu percebi que pode não funcionar.
Se não me engano, o evento OnExit será executado [b:0f18932530]antes[/b:0f18932530] do OnClick. POrtanto, não será afetado

Omar, as hierarquias do Button e do SpeedButton são diferentes...aí que tá o problema...
Eu tentei dar um typecast meio ´reverso´, mas (era esperado) não funcionou...

É realmente necessário usar SpeedButtons?

Até+


GOSTEI 0
Cabelo

Cabelo

28/06/2004

Paulo..

Os eventos não seriam hierárquicos, devido serem compónentes distintos, na verdade, iria armazenar um valor Lógico dentro de uma variável boolean se o speedbutton foi clicado, caso tenah sido clicado, no evento exit de um EDIT, seria alterado para as comparações e finalizações..

isto foi o quê entendi..

sem mais

Cabelo


GOSTEI 0
Paulo_amorim

Paulo_amorim

28/06/2004

Paulo.. Os eventos não seriam hierárquicos, devido serem compónentes distintos, na verdade, iria armazenar um valor Lógico dentro de uma variável boolean se o speedbutton foi clicado, caso tenah sido clicado, no evento exit de um EDIT, seria alterado para as comparações e finalizações..


Olá

Resolvi tirar isso a limpo, criei um teste com um edit e um spb
Descobri que o Spb não recebe foco, pode até ver que não consta no TabOrderList

Cabelo, isso não se trata de ser hierárquico ou não.
O problema eh quem será executado primeiro. Repare que ele primeiro sai do Exit, para depois pôr o foco no botão (se fosse um botão normal) e executá-lo
Assim, o teste da variável Booleana seria feita [b:702fe36e71]antes[/b:702fe36e71] da mesma ser afetada pelo clique do botão

Espero que ajude
Até+


GOSTEI 0
Cabelo

Cabelo

28/06/2004

Caro Paulo

Ao meu entender é isto mesmo que ele quer..

Ele não quer disparar o evento Exit do EDIT sem testar se foi clicado o botão(SpeedButton), se for clicado este botão ele irá abortar, senão irá executar uma série de comandos..

por isso tem que ser um speedbutton, e trabalhar nisso, na verade ele quer abortar se esse botão for clicado..

entendeu??

Eu tb não entendi o pq de não usar o evento click deste botão para fazer as validações, mas mesmo assim é isso que ele quer..

sem mais

Cabelo


GOSTEI 0
Omar Cury

Omar Cury

28/06/2004

Eu estava tentando usar Speedbutton por ter a propriedade de transparencia do botao(flat) o que melhorava e muito o visual do programa...

mesmo assim, obrigado por responderem, decidi trocar de componente, vou usar um bitbtn mesmo e no evento onExit dos Tedits vou usar testar com Focused.

Valew


GOSTEI 0
Paulo_amorim

Paulo_amorim

28/06/2004

[quote:6ac987cce6=´Omar Cury´]Eu estava tentando usar Speedbutton por ter a propriedade de transparencia do botao(flat) o que melhorava e muito o visual do programa...

mesmo assim, obrigado por responderem, decidi trocar de componente, vou usar um bitbtn mesmo e no evento onExit dos Tedits vou usar testar com Focused.

Valew[/quote:6ac987cce6]

Olá

eu concordo que esteticamente o SpeedButton eh melhor, pois fica bonitinho...

Mas nesse caso o BitBtn eh melhor devido a sua necessidade
Eu testei o BitBtn.Focused no OnExit do Edit, ele faz sim

Espero que funcione
Até+


GOSTEI 0
POSTAR