uso da tecla UP para ir para o campo anterior
Em uma aplicação normal eu uso o código abaixo no evento Onkeydown do form.
E funciona normalmente.
if (Key in [VK_RETURN, VK_DOWN, VK_UP]) and
(Screen nil) and (Screen.ActiveControl nil) then
begin
if Key in [VK_RETURN, VK_DOWN] then
Keybd_event(VK_TAB,0,0,0)
else
Perform(WM_NEXTDLGCTL, 1, 0);
end;
Tentei implementar o exemplo usando a classe TDI que foi recentemente postada no site de vocês. ( 28/1/2009 - Canal Delphi - Utilize a interface TDI sem modificar sua aplicação)
Só que o Perform(WM_NEXTDLGCTL, 1, 0) não funciona, apesar de ser executado, quando a tecla UP é pressionada.
Segue anexo o exemplo do uso da classe TDI, com a unit2 alterada por mim para testar o evento onkeydown que implementei.
Eu usei o código "Keybd_event(VK_TAB,0,0,0)"
para substituir o "Perform(WM_NEXTDLGCTL, 1, 0)"
que também não funcionava.
No aguardo.
Nirlan
Nirlan Fundao
Curtidas 0
Melhor post
Rodrigo Mourão
20/02/2009
Olá amigo !!!
Resolvido !! Vai ao formulario principal da aplicação aquele que irá conter todos as abas e no evento onKeyDown dele coloque o codigo abaixo:
if (Key in [VK_RETURN, VK_DOWN, VK_UP]) then
begin
if Key in [VK_RETURN, VK_DOWN] then
Keybd_event(VK_TAB,0,0,0) // Perform(WM_NEXTDLGCTL, 0, 0)
else
Perform(WM_NEXTDLGCTL, 1, 0);
end;
Não esqueça de alterar o KeyPreview dele para True!! Isso Resolve, testei aqui com sucesso !!!
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
Resolvido !! Vai ao formulario principal da aplicação aquele que irá conter todos as abas e no evento onKeyDown dele coloque o codigo abaixo:
if (Key in [VK_RETURN, VK_DOWN, VK_UP]) then
begin
if Key in [VK_RETURN, VK_DOWN] then
Keybd_event(VK_TAB,0,0,0) // Perform(WM_NEXTDLGCTL, 0, 0)
else
Perform(WM_NEXTDLGCTL, 1, 0);
end;
Não esqueça de alterar o KeyPreview dele para True!! Isso Resolve, testei aqui com sucesso !!!
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 1
Mais Respostas
Rodrigo Mourão
18/02/2009
Olá Amigo !!!!
Entendi perfeitamente seu problema e precisaria dos fontes para depurar. Acima você diz:
"Segue anexo o exemplo do uso da classe TDI, com a unit2 alterada por mim para testar o evento"
mas não vi o anexo.
Ficarei no aguardo !!!!!!!!!!!
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
Entendi perfeitamente seu problema e precisaria dos fontes para depurar. Acima você diz:
"Segue anexo o exemplo do uso da classe TDI, com a unit2 alterada por mim para testar o evento"
mas não vi o anexo.
Ficarei no aguardo !!!!!!!!!!!
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Nirlan Fundao
18/02/2009
ao tentar enviar o arquivo ZIP com menos de 300 kb através da opção file upload, recebo a mensagem: Arquivo de imagem invalido. Seu IP e login foram salvos no log do servidor.
Estou disponibilizando o arquivo no endereço a seguir:
www.mtg.com.br/tdi.zip
Nirlan
GOSTEI 0
Rodrigo Mourão
18/02/2009
OK Amigo !!!
Estarei analisando e lhe respondo em breve !!!!
abs !!!
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
Estarei analisando e lhe respondo em breve !!!!
abs !!!
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Devmedia
18/02/2009
vc pode utiizar o "meu disco virtual" para poder upar os seus arquivos. Essa opção está na home da consultoria. caso tenha dúvidas para usá-lo, tem o link do video explicativo ao lado da opção.
Lembrando que os arquivos só podem ser do formato .zip e .rar.
Lembrando que os arquivos só podem ser do formato .zip e .rar.
GOSTEI 0
Rodrigo Mourão
18/02/2009
Olá Amigo !!!
Testei aqui o exemplo com depuração. Na verdade o evento do form nao e disparado quando ele esta dentro de uma aba !! Ele e criado dinamicamente.
Fiz um teste colocando o evento no Form Principal que é o Form que sofre o event OnKeyDow e ele foi interceptado com sucesso. O problema é que ele move o foco para o próximo componente na lista dele que não é o proximo componete na list do form que esta aberto dentro dele !!!
Eu irei verificar para tentar identificar uma maneira ou do Form Interno interceptar a mensagem de pressionamento de tecla ou que o from externo possa mover o foco para o componente correto !!!
abs
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
Testei aqui o exemplo com depuração. Na verdade o evento do form nao e disparado quando ele esta dentro de uma aba !! Ele e criado dinamicamente.
Fiz um teste colocando o evento no Form Principal que é o Form que sofre o event OnKeyDow e ele foi interceptado com sucesso. O problema é que ele move o foco para o próximo componente na lista dele que não é o proximo componete na list do form que esta aberto dentro dele !!!
Eu irei verificar para tentar identificar uma maneira ou do Form Interno interceptar a mensagem de pressionamento de tecla ou que o from externo possa mover o foco para o componente correto !!!
abs
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Nirlan Fundao
18/02/2009
se você observar, se for pressionado a tecla enter ou down irá funcionar normalmente, já que utilizo:
if Key in [VK_RETURN, VK_DOWN] then
Keybd_event(VK_TAB,0,0,0)
Se houvesse um meio de usar a tecla UP ou o SHIFT + TAB com o keybd_event, poderia resolver o problema.
GOSTEI 0
Rodrigo Mourão
18/02/2009
Olá Amigo Podemos encerrar o chamado ???
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Nirlan Fundao
18/02/2009
sim, podemos encerrar.
GOSTEI 0