Desabilitando a tecla TAB
Bom dia amigos:
Gostaria de saber se é possivel e como fazer para desabilitar a tecla ´TAB´ de um determinado Form ou de toda a aplicação.
Isto tem como objetivo forçar o usuário a utilizar o ´enter´ para passar o foco de um dbedit para outro.
Grato
Zekas
Gostaria de saber se é possivel e como fazer para desabilitar a tecla ´TAB´ de um determinado Form ou de toda a aplicação.
Isto tem como objetivo forçar o usuário a utilizar o ´enter´ para passar o foco de um dbedit para outro.
Grato
Zekas
Zekas
Curtidas 0
Respostas
Adriano_servitec
01/11/2005
Ae amigo tente essa procedure ai
procedure TForm1.MudarComEnter(var Msg: TMsg; var Handled: Boolean);
begin
If not ((Screen.ActiveControl is TCustomMemo) or
(Screen.ActiveControl is TCustomGrid) or
(Screen.ActiveForm.ClassName = ´TMessageForm´)) then
begin
If Msg.message = WM_KEYDOWN then
begin
Case Msg.wParam of
VK_RETURN,VK_DOWN : Screen.ActiveForm.Perform(WM_NextDlgCtl,0, 0);
VK_UP : Screen.ActiveForm.Perform(WM_NextDlgCtl,1, 0);
VK_TAB: Msg.message:=0;
end;
end;
end;
end;
e no events oncreate do seu form chame-o assim:
Application.OnMessage := MudarComEnter;
Declare a procedure no type para nao dar erro de compilacao
procedure MudarComEnter(var Msg: TMsg; var Handled: Boolean);
Flw
Testa ai e ve se funciona
Obs: nao ah nessecidade de deixar a propriedade keypreview do seu form como true
Agora se vc usar o evets onkeypress do form por exempo para a tecla ESC para retornar ai sim ativa o onkeypress
Vai ai tambem o codigo do ESC
if key = #27 then
begin
key := 0;
Perform(WM_NEXTDLGCTL,1, 0);
end;
Abraços
T+
procedure TForm1.MudarComEnter(var Msg: TMsg; var Handled: Boolean);
begin
If not ((Screen.ActiveControl is TCustomMemo) or
(Screen.ActiveControl is TCustomGrid) or
(Screen.ActiveForm.ClassName = ´TMessageForm´)) then
begin
If Msg.message = WM_KEYDOWN then
begin
Case Msg.wParam of
VK_RETURN,VK_DOWN : Screen.ActiveForm.Perform(WM_NextDlgCtl,0, 0);
VK_UP : Screen.ActiveForm.Perform(WM_NextDlgCtl,1, 0);
VK_TAB: Msg.message:=0;
end;
end;
end;
end;
e no events oncreate do seu form chame-o assim:
Application.OnMessage := MudarComEnter;
Declare a procedure no type para nao dar erro de compilacao
procedure MudarComEnter(var Msg: TMsg; var Handled: Boolean);
Flw
Testa ai e ve se funciona
Obs: nao ah nessecidade de deixar a propriedade keypreview do seu form como true
Agora se vc usar o evets onkeypress do form por exempo para a tecla ESC para retornar ai sim ativa o onkeypress
Vai ai tambem o codigo do ESC
if key = #27 then
begin
key := 0;
Perform(WM_NEXTDLGCTL,1, 0);
end;
Abraços
T+
GOSTEI 0