Fórum Criar componente que receba foco #262126
15/12/2004
0
preciso criar um componente que possa receber o foco do teclado. De acordo com o help do Delphi, o componente deve ser descendente de TCustomControl, porque assim ele vai ter um Handle próprio e tudo mais. Até aí tudo bem.
Criei ele descendente de TCustomControl, ele até aparece na tab order, mas se eu pressiono tab no form, o foco não muda...:roll:
Já tentei responder à mensagem WM_SETFOCUS, CM_FOCUSCHANGED, mas nada funcionou.. :cry:
Alguem sabe como fazer isso?
T+,
Vinicius;
Fórum Vini
Curtir tópico
+ 0Posts
15/12/2004
Massuda
Gostei + 0
15/12/2004
Fórum Vini
( Viajei, tentando pegar mensagens e tal :oops: )
Mto obrigado kra! :D :D :D
Fico te devendo essa :wink:
T+,
Vinicius;
Gostei + 0
16/11/2005
Alex Maia
Em meus sistemas a tecla ESC é configurada para fechar as janelas, mas tenho um componente que quando recebe o foco ele cancela esta função. No sistema os forms possuem a propriedade KeyPreview = True e no evento OnKeyDown tenho o seguinte código:
if Key = vk_Escape then Self.Close;
Tenho os fontes do componente e preciso mudá-lo para solucionar este problema. Alguem pode me ajudar?
Desde já agradeço.
Gostei + 0
17/11/2005
Massuda
Gostei + 0
17/11/2005
Alex Maia
Gostei + 0
17/11/2005
Martins
Pq q isso só acontece com [b:d955582508]vk_Escape [/b:d955582508]?
Alguém poderia responder.
Gostei + 0
17/11/2005
Emerson Nascimento
Gostei + 0
17/11/2005
Martins
Ambas estão false
Gostei + 0
17/11/2005
Alex Maia
Cancel = False;
Gostei + 0
17/11/2005
Martins
Cancel = False;[/quote:bd064c298e]
Coloque:
Default = true
Deve funcionar agora.
Gostei + 0
17/11/2005
Michael
[]´s
Gostei + 0
17/11/2005
Michael
Vi o código do seu componente que vc me mandou, e ele se comporta exatamente como um [b:7efaf5a7cc]TButton [/b:7efaf5a7cc]- mas não é derivado dele, e sim de [b:7efaf5a7cc]TCustomControl[/b:7efaf5a7cc]. Então, ele precisa implementar os mesmos métodos que insterceptam mensagens do Windows sobre componentes, como [b:7efaf5a7cc]CM_DIALOGKEY[/b:7efaf5a7cc].
Como [b:7efaf5a7cc]TButton[/b:7efaf5a7cc], ele tem a propriedade [b:7efaf5a7cc]Cancel[/b:7efaf5a7cc], que ao ser setada para true, como os outros colegas disseram acima, chama o evento [b:7efaf5a7cc]OnClick [/b:7efaf5a7cc]do botão qdo Esc é pressionado.
[]´s
Gostei + 0
17/11/2005
Martins
Não, não [b:5892e1588e]Michael[/b:5892e1588e], veja o q tem no post do colega.
[quote:5892e1588e=´Alex Maia´]
Caros amigos,
Em meus sistemas a tecla ESC é configurada para fechar as janelas, mas tenho um componente que quando recebe o foco ele cancela esta função. No sistema os forms possuem a propriedade KeyPreview = True e no evento OnKeyDown tenho o seguinte código:
if Key = vk_Escape then Self.Close;
Tenho os fontes do componente e preciso mudá-lo para solucionar este problema. Alguem pode me ajudar?
Desde já agradeço.[/quote:5892e1588e]
Se ele deixar o Cancel = true, o código [b:5892e1588e]if Key = vk_Escape then Self.Close; [/b:5892e1588e], vai continuar não funcionando, se ele mudar o Default para [b:5892e1588e]True[/b:5892e1588e], ele pode rodar q vai funcionar, se é q é mesmo Tbutton.
Valew Michael, passa lá no fórum do ArapuKa, no endereço do asa-sistemas.
Abraço!!!
Gostei + 0
17/11/2005
Michael
De qualquer forma, este código não é necessário, já que o componente se engarrega de fechar o formulário no caso do Esc, basta colocar o Self.Close no OnClick do botão Cancelar, se houver um.
[]´s
Gostei + 0
17/11/2005
Martins
Não é para fechar através do OnClick do botão, ela fecha os forms teclando [b:801139f335]ESC[/b:801139f335], é isso q acontece, e da forma q ela quer só funcionou assim.
Ok!
:wink:
T+
Boa Sorte
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)