Tecla TAB no OnKeyPress
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:
Ele simplesmente nao faz nada, so passa o foco pro proximo componente.
O que faço?
Obrigado
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
Curtidas 0
Respostas
Edilcimar
06/11/2007
tente aí no onkeydown
If Key = vk_Tab then
faça algo
o keypreview do form tem que estar true
If Key = vk_Tab then
faça algo
o keypreview do form tem que estar true
GOSTEI 0
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.
Ele continua focando o proximo componente e nao executando o que eu mandei.
GOSTEI 0
Vitor Alcantara
06/11/2007
Amigo sei que da pra fazer isso com o componente ApplicationEvents no método Message.
Ai segue um exemplo;
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
06/11/2007
Muito obrigado amigo, funcionou direitinho.
:D
:D
GOSTEI 0