Evento OnExit e RAdioGroup
20/01/2006
0
[color=darkred:8510aea93b][b:8510aea93b]Preciso disso :[/b:8510aea93b][/color:8510aea93b]
Mas quando o Usuário Clicar no RadioGroup o evento OnExit deve ser desconsiderado...
:wink: :wink:
Sabemos que a [b:8510aea93b]situação analoga [/b:8510aea93b]quando o Usuário Clica Nun Botao é :
procedure TFormMovimentoCheques.MaskEdit3Exit(Sender: TObject); begin if (not (BitCancelar.Focused))) then begin //Faço o que quiser quando o botao Cancelar Não for Pressionado end; end; end;
:idea: :idea: :idea: :idea:
A primeira idéia que eu tive foi testar [b:8510aea93b]RadioGroup1.Focused [/b:8510aea93b], :arrow: :arrow: por analogia com a instrução acima
Porem este raciocineo não funciona com RadioGroup :cry: :cry: :cry:
Como resolver este pepino :P :P :P :P
Obrigado..
Marco Salles
Posts
20/01/2006
Edilcimar
20/01/2006
Marco Salles
eu sei que é dificil explicar .. Mas vamos la
Eu quero desconsiderar o evento OnExit Do MaskEdit Quando o RadioGroup For Clicado
Em outra palavras suponha que o foco esteja no MaskEdit... O Usuário clica no RadioGroup , nesta situação gostaria de desprezar o Enebto Onexit do MaskEdit
Fui mais claro :?: :?: :?:
20/01/2006
Edilcimar
° nome padrão -> este aqui (que é o índice 0) ficaria marcado como padrão
° fazer coisa 1
° fazer coisa 2, etc
tenho a edit, maskedit ou qualquer outra coisa e um botão que vai fazer algo, no clicar do referido botão eu olho o contexto do edit e do botão do radiogroup, se eu eu tiver radiogroup1.itemindex := 0 é porque o usuário não clicou em nada ou se tinha clicado voltou ao estado original, caso contrário eu faça algo de acordo com o índice do radiogroup
20/01/2006
Marco Salles
Mas eu não quero deixar de fazer algo em relação ao conteudo do RAdioGroup... Eu quero é deixar de fazer Algo assim que o RadioGroup for clicado Na situação onde o MaskEdit Estiver com o Foco
O Que eu quero é dizer para o evento do MAskEdit , desconsiderar o Codigo de seu evento , Porque o Proximo Controle que ira receber o Foco sera O RadioGroup...
Obrigado...
20/01/2006
Edilcimar
If Maskedit1.Focused and RadioGroup1.ItemIndex = 0 then
Faça Algo
Else If MaskEdit1.Focused and RadioGroup1.ItemIndex = 1 then
(faça diversos else if para ver as diversas opções do radiogroup)
faça algo ou algo mais
Elseif not Maskedit.Focused and RadioGroup1.ItemIndex = X then
faça sei lá o que
O único problema que estou verificando é:
Como o radiogroup1 pode ser clicado e o maskedit ter foco!
A provável solução para isso seria a criação de uma variável booleana, que teria o valor para true assim que vc entrasse no maskedit, e ao sair do maskedit, SE o próximo foco fosse no radiogroup então ela continuaria como True, caso contrário ela passaria para False!
20/01/2006
Marco Salles
Este é o problema...
Preciso disso :
[b:9233d7c174]1)O Foco esta no MAskEdit
2)o usuário clica no radioGroup
3)o evento Onenter do MaskEdit não é executado[/b:9233d7c174]
Ja disse anteiormente que , se o usuário Clicar Nun Botao e so testar
a propriedadede NomeDoBotao.Focused para permitir ou não que o evento Onexit do MaskEdit seja executado ou não ... Mas no caso do RadioGroup esta propriedade não funciona como se imagina.. :cry: :cry:
Eu não posso dar garantias se o controle selecionado com o click do mouse sera mesmo o RadioGroup.. É isto que eu tento fazer Testando a condição [b:9233d7c174][color=darkred:9233d7c174]RadioGroup.Focused[/color:9233d7c174][/b:9233d7c174]
[b:9233d7c174]
Acho que uma saida para isto é saber como testar se o Proximo controle a receber o Foco apos o click Do Mouse for relamente o RadioGroup.[/b:9233d7c174]
[b:9233d7c174]Mas como fazer este teste[/b:9233d7c174]... ???? :?: :?: :?:
Muito obrigado
20/01/2006
Edilcimar
no onexit da mesma coloque
if radiogroup focused = true then variável boolena =true
else
variável boolean = false
Não testei, mas deve funcionar
21/01/2006
Marco Salles
é isto que estou falando desde o inicio :
[b:82350cce3b]
Reiterando , o que eu estou precisando e mais ou menos isto :::::
procedure TForm1.MaskEdit1Exit(Sender: TObject); begin showmessage (´So exibir esta mensagem se o Controle Clicado Não for o RadioGroup´); end;
21/01/2006
Edilcimar
no onenter do maskedit coloque
foco := true
no onenter de todos os outros componentes, exceto o radiogroup coloque
foco := false
aí vc fica sabendo que se o último componente clicado foi o maskedit, pode também trocar a variável foco para word, e colocar um número na mesma para cada componente, aí fica sabendo qual foi o último componente clicado
21/01/2006
Marco Salles
sto acho que não iura adiantar , porque o evento Onenter de qualquer controle so sera executado apos o evento Onexit do MaskEdit
Veja to em qualquer componente , cliquei no MAskEdit ... Dai clico no RadioGroup.. é claro que o evento onexit do mesmo sera disparado , porque o evento Onenter do RadioGroup que nesse caso me dara o Valor
do componente que sera disparado apos a finalização d evento Onexit do
RadioGroup
So uma pergunta : Voce esta testando estas dicas para ver o que quero é o que voce esta obtendo ?????
Muito obrigado...
21/01/2006
Edilcimar
21/01/2006
Marco Salles
Ja que todos ja sabem o que eu preciso :
Vou tentar explicar o porque disso :
Estou tentando formatar o Texto Do MaskEdit com o Valor do RadioGroup.ItemIndex
Assim se o RadioGroup.ItemIndex = 0 Eu formato o MaskEdit1.text com uma mascar de CPF e
caso o Usuário Clicar No RadioGroup.ItemIndex = 1 eu formato o MaskEdit1.Text com uma mascara de CNPJ
So que no evento onexit do MaskEdit eu tenho uma rotina de validação .
E ao clicar No RadioGroup o usuário so quer mudar o formato da mascara, mas como o evento Onexit do MaskEdit ocorre antes do evento Onclick Do RadioGroup , obtenho Um erro devido a rotina de validação ...
Nen sempre o Valor do Cpf / Cnpj esta correto
Em outras palavras seria isto:
procedure TForm1.MaskEdit1Exit(Sender: TObject); begin //Caso o RadioGroup for selecionado ("Clicado") if RadioGroup1.focused Then executa a rotina de validação e verifico o Valor do cpf ou Cnpj else nada faz end;
21/01/2006
Marco Salles
[b:1d7dece46d]ERRADO[/b:1d7dece46d]
procedure TForm1.MaskEdit1Exit(Sender: TObject); begin //Caso o RadioGroup for selecionado ("Clicado") if RadioGroup1.focused Then executa a rotina de validação e verifico o Valor do cpf ou Cnpj else nada faz end;
[b:1d7dece46d]O QUE QUERO REALMENTE :[/b:1d7dece46d]
procedure TForm1.MaskEdit1Exit(Sender: TObject); begin //Caso o RadioGroup for selecionado ("Clicado") if RadioGroup1.focused Then nada faz else executa a rotina de validação e verifico o Valor do cpf ou Cnpj end;
muito obrigado...
21/01/2006
Martins
podemos tentar assim, mas vai faltar implementar mais algumas coisas, veja:
if TRadioButton(RG.Controls[0] ).Focused then ShowMessage(´Opção1´) else ShowMessage(´Opção2´);
Boa sorte!!!
21/01/2006
Marco Salles
Talvez não seja .. Por falar a verdade eu ate ja consegui isto faz algumas horas , mas enviando mensagem para o windows etc,etc, e blablabal.. Mas as vezez alguem conhece uma maneira mais fácil.. Fiz assim conforme voce sugeriu:
if TRadioButton(RadioGroup1.Controls[0] ).Focused then ShowMessage(´Opção1´) else if TRadioButton(RadioGroup1.Controls[1] ).Focused then ShowMessage(´Opção2´);
independente do que estar selecionado no RadioGroup , nenhuma mensagem foi selecionada o que mostra que a Intrução focused sempre sera falsa , independentemente do que estiver nela selecionada ou recebendo o Click Do Mouse...Entao me parece que assim não dá :cry: :cry: :cry:
Clique aqui para fazer login e interagir na Comunidade :)