Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Como anular a tecla TAB


Vivendo&Aprendendo

Pergunta

Galera eu fiz em minha aplicação a alteração para que a tecla Enter funcione como a tecla TAB para mudar de campos, mas agora eu preciso anular a tecla Tab em todo o meu form, fazer com que ao precionar Tab nada aconteça. Como eu posso fazer isso?

Já tentei no OnKeyDown fazer a tecla receber 0, Null, e nada acontece quando preciono Tab ele joga o foco para o outro campo e não posso deixar isso acontecer.

Alguém ai tem outra idéia?

Abraços

Alexandre

Editado por Vivendo&Aprendendo
Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0
var h_Hook:HHOOK;
function Keyboard_callback(nCode:Integer; WP:WParam; LP:lParam):Integer; stdcall;
begin
  if (nCode <> HC_ACTION) or (WP <> 9) then
    Result := CallNextHookEx(h_Hook, nCode, WP, LP)
  else
    Result := 1;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  h_Hook := SetWindowsHookEx(WH_KEYBOARD, @Keyboard_callback, 0, GetCurrentThreadId);
end;

Editado por niubi
Link para o comentário
Compartilhar em outros sites

  • 0

Olá Niubi

Olha funcionou beleza, mas como eu faço para tirar o beep que ocorre quando teclo enter e o foco muda de campo?

E como faço para deixar a função em uma unit e só chamar ela nas outras depois?

Abraços

Alexandre

Editado por Vivendo&Aprendendo
Link para o comentário
Compartilhar em outros sites

  • 0

Olá,

Quanto ao beep eu não sei mas deve estar em alguma chave do regedit nas configurações de sons do Windows. Acho que é só ir lá e retirá-lo.

Qual função você se refere ? se for a Keyboard_callback ela é uma função de callback e quando você instala a hook pelo SetWindowsHookEx, toda a vez que o teclado for utilizado, a função é chamada.

Link para o comentário
Compartilhar em outros sites

  • 0

É que eu tentei deixar esta função que você me passou em um form e usá-la em outro só chamando mas não funcionou deu erro.

E se alguém ai souber como faço para não dar o som de beep quando passo de um campo para o outro usando o enter eu agradeço também... :rolleyes:

Alexandre

Link para o comentário
Compartilhar em outros sites

  • 0

procedure TForm1.Button1Click(Sender: TObject);
begin
   { Evento Som Padrão }
   MessageBeep(0); { ou Beep; }
   sleep(500);
  
 { Evento Parada Crítica }
   MessageBeep(16);
   sleep(500);
  
 { Evento Pergunta }
   MessageBeep(32);
   sleep(500);
  
 { Evento Exclamação }
   MessageBeep(48);
   sleep(500);
  
 { Evento Asterisco }
   MessageBeep(64);

end;

faça o teste:

Se o som estiver saindo do autofalante voce ouvira todos estes sons, caso contrario não

eu preciso anular a tecla Tab em todo o meu form

tente no evento ONKEYPRESS do form

Código:

if Key = #9 then

Key := 0;

ou veja

http://www.forumweb.com.br/foruns/index.ph...49093&st=15

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado pelas dicas Jhonas, está resolvido, consegui adaptar o código que você postou no link. Ficou assim:

procedure TForm1.CMDialogKey(Var Msg: TWMKEY);
begin
  if (ActiveControl is TEdit) and
     (TEdit(ActiveControl).Focused) then
  begin
    if (Msg.Charcode = VK_TAB) then
      Msg.Result := 0
    else
      if (Msg.Charcode = VK_RETURN) then
      begin
        Msg.Result := -1;
        SelectNext(ActiveControl, True , True);
      end;
  end
  else
    inherited;
end;
Declare na private do form:
procedure CMDialogKey(Var Msg: TWMKEY);

Funcionou certinho, o enter como Tab e o Tab anulado.

Obrigado

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...