Fórum uso da tecla UP para ir para o campo anterior #2907

18/02/2009

0

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

Nirlan Fundao

Responder

Post mais votado

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

Rodrigo Mourão

Rodrigo Mourão
Responder

Gostei + 1

Mais Posts

18/02/2009

Rodrigo Mourão

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


Responder

Gostei + 0

19/02/2009

Nirlan Fundao

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
Responder

Gostei + 0

19/02/2009

Rodrigo Mourão

OK Amigo !!!

Estarei analisando e lhe respondo em breve !!!!

abs !!!

Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
Responder

Gostei + 0

19/02/2009

Devmedia

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.

Responder

Gostei + 0

19/02/2009

Rodrigo Mourão

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
Responder

Gostei + 0

20/02/2009

Nirlan Fundao

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

Gostei + 0

23/02/2009

Rodrigo Mourão

Olá Amigo Podemos encerrar o chamado ???

Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi

Responder

Gostei + 0

28/02/2009

Nirlan Fundao

sim, podemos encerrar.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar