Tecla TAB no OnKeyPress

Delphi

06/11/2007

Quero mudar a função da tecla TAB em um TEdit.
Pressionando TAB neste TEdit, não quero que ele passe o foco para o próximo componente, mas sim adicione um texto a esse mesmo campo.

Já tentei fazer com o OnKeyPress e com o OnKeyDown e nenhum dos 2 funcionou, ele se quer faz o q mandei, apenas muda o foco.

Tentei dessas formas:

procedure TfrmMain.txtMsgKeyPress(Sender: TObject; var Key: Char);
begi
  if (Key = #9) then begin
    Key := 0;
    Edit1.text := ´texto´
  end;
end;


procedure TfrmMain.txtMsgKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key = VK_TAB) then begin
    Key := 0;
    edit1.text := ´texto´;
  end;
end;


Ele simplesmente nao faz nada, so passa o foco pro proximo componente.
O que faço?

Obrigado


Kohl

Kohl

Curtidas 0

Respostas

Edilcimar

Edilcimar

06/11/2007

tente aí no onkeydown
If Key = vk_Tab then
faça algo
o keypreview do form tem que estar true


GOSTEI 0
Kohl

Kohl

06/11/2007

Tambem nao funcionou, tentei com os 2 metodos, OnKeyPress e OnKeyDown tambem com o #9 e nada, mesmo com o KeyPreview como true.

Ele continua focando o proximo componente e nao executando o que eu mandei.


GOSTEI 0
Vitor Alcantara

Vitor Alcantara

06/11/2007

Amigo sei que da pra fazer isso com o componente ApplicationEvents no método Message.

Ai segue um exemplo;
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  case Msg.Message of
    WM_KEYDOWN:
    begin
      if (Msg.wParam = VK_TAB) //Testa o precionamento do TAB
     AND (ActiveControl = Edit1) //Verifica se o Edit1 está com o focu
     then
      begin
         Edit1.Text := ´Texto´;
         Edit1.SetFocus;
         abort;
      end;
    end ;
  end;
end;



GOSTEI 0
Kohl

Kohl

06/11/2007

Muito obrigado amigo, funcionou direitinho.
:D


GOSTEI 0
POSTAR