desabilitar tab

Delphi

29/03/2004

como faço para desabilitar a tecla tab


Norotico

Norotico

Curtidas 0

Respostas

Paulo_amorim

Paulo_amorim

29/03/2004

Olá

No evento KeyPress, teste se a tecla eh tab
if Key = #9 then { 9 ou VK_TAB }
Key := 0;


O código 0 nao realiza nada...

Até+


GOSTEI 0
Norotico

Norotico

29/03/2004

deu o seguinte erro:

undeclared identifier : ´key´


GOSTEI 0
Paulo_amorim

Paulo_amorim

29/03/2004

Olá

Isso deve ser programado no evento OnKeyPress do objeto...
clique no objeto desejado...
no object inspector, va nos eventos...
dois cliques no evento OnKeyPress
agora sim..programe ai dentro!

Até+


GOSTEI 0
Norotico

Norotico

29/03/2004

O tab continuou funcionando


GOSTEI 0
Paulo_amorim

Paulo_amorim

29/03/2004

O tab continuou funcionando


Olá

Me Desculpe, vc está certo. Isso soh funciona com outra tecla...nao o Tab por cuasa do Taborder...

Não consegui tirar o Tab aqui...
Espero que tenha sucesso

Até+


GOSTEI 0
Marco Salles

Marco Salles

29/03/2004

Geralmente Se Usa o Evento onKeyDown Do Componente...Neste Evento Tente Isto:
If Key=VK_Tab Then
  Key:=0;



GOSTEI 0
Henry

Henry

29/03/2004

Amigo, mude a opção de tabulação dos objetos de seu programa para 0


GOSTEI 0
Marco Salles

Marco Salles

29/03/2004

Amigo, mude a opção de tabulação dos objetos de seu programa para 0


Como se Faz Isto? Eu Sempre Desativei a Tecla Tab Usando o Código Citado :!: Voce Poderia Dar Mais Detalhe... Por Exemplo Tenho Tres Edit e Gostaria Que a Tecla Tab Não Operrasse Quando o Foco Estiver No Edit1.E Agora :?: :?:


GOSTEI 0
Henry

Henry

29/03/2004

Poow brother, mude a propiedade TabOrder de todos seus objetos pra 0.


GOSTEI 0
Fabio.hc

Fabio.hc

29/03/2004

Ou vc pode tentar assim:

Coloque esta rotina no formprincipal que desabilita o tab em toda a aplicação:

Uses
  Grids

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;

procedure TForm1.FormCreate(Sender: TObject);
begin
   Application.OnMessage := MudarComEnter;
end;



GOSTEI 0
Marco Salles

Marco Salles

29/03/2004

Amigo, mude a opção de tabulação dos objetos de seu programa para 0

Infelismenmte Eu Não Consigo, Quando Tento Fazer Isto No Objeto Inspector o Delphi Automaticamente Ele Renomeia a Tabulação :?:
Quanto a Dúvida Do norotico , Ele Quer Desabilitar a Tecla Tab Em Um Componente Ou Em Toda Aplicação :?: :?:


GOSTEI 0
Paullus

Paullus

29/03/2004

Que dor de cabeça hein galera...
hehehehe...

No formulário vocês devem setar a propriedade [b:bfc98ab4fd]KeyPreview[/b:bfc98ab4fd] para [b:bfc98ab4fd]true[/b:bfc98ab4fd]. Agora sim... dentro do OnKeyDown do [b:bfc98ab4fd]Formulário[/b:bfc98ab4fd] vocês colocam o código abaixo.

  if Key = VK_TAB then
    Key := 0;
 


Fui!!!


GOSTEI 0
Paulo_amorim

Paulo_amorim

29/03/2004

Olá

Enquanto tentava ajudar nosso colega, testei as soluçoes citadas
novamente agora tnetei denovo.

Marcos Salles, o OnKeyDown nao funciona para o Tab devido ao TabOrder...ele nem chega a testar o If.!!! funciona para qualquer outra coisa, mas o tab nao! :?

Henry, se vc muda o TabOrder de um componente para 0, ele muda o que era 0 para 1...

paullus, a mesma coisa do Marcos...o Tab funciona mesmo assim...

Agora fiquei curioso tambem... espero que seja encontrada aresposta


Até+
[]´s


GOSTEI 0
Paulo_amorim

Paulo_amorim

29/03/2004

Olá

Tentando, eu achei uma soluçao que eu acho ser a esperada

Mude a propriedade TabStop dos componentes que vc não quer acessar com o Tab para False...
Se vc nao quer o Tab funcionando, mude a propriedade de TODOS os componentes!

Até+


GOSTEI 0
Fabio.hc

Fabio.hc

29/03/2004

ninguem testou a minha dica. :cry:


GOSTEI 0
Paullus

Paullus

29/03/2004

É... realmente meu código não funcionaria. Olha o que eu achei no Help:

Specifies whether the form should receive keyboard events before the active control. [b:5dbc0f6a3b]property [/b:5dbc0f6a3b]KeyPreview: Boolean; [b:5dbc0f6a3b]Description[/b:5dbc0f6a3b] If KeyPreview is True, keyboard events occur on the form before they occur on the active control. (The active control is specified by the ActiveControl property.) If KeyPreview is False, keyboard events occur only on the active control. [b:5dbc0f6a3b][u:5dbc0f6a3b]Navigation keys (Tab, BackTab, the arrow keys, and so on) are unaffected by KeyPreview because they do not generate keyboard events.[/u:5dbc0f6a3b][/b:5dbc0f6a3b] KeyPreview is False by default.



GOSTEI 0
Paullus

Paullus

29/03/2004

ninguem testou a minha dica. :cry:

Relaxa... ela é 100¬ certa.

(se a solução procurada não for via código)


GOSTEI 0
Marco Salles

Marco Salles

29/03/2004

Marco Salles Escreveu:
´Geralmente Se Usa o Evento onKeyDown Do Componente´
O Que Eu Quis Dizer Com Isto é Isto [color=darkred:1ce7a5f183]´Depende´...[/color:1ce7a5f183]Por Exemplo Num Componente DbGrid Funciona, Num Componente Edit Não..Por Isto Que Usei o Termo [color=red:1ce7a5f183]´Geralmente´...[/color:1ce7a5f183]
E Quanto a Resposta Do Fabio.hc é 100¬ OK Porem Eu Já Tinha Levantado a Questão Anteriormente:
Quanto a Dúvida Do norotico , Ele Quer Desabilitar a Tecla Tab Em Um Componente Ou Em Toda Aplicação

Agora Acho ue Nosso Amigo Norcotico Poderia Dar Mais Detalhe Para a Gente: Onde Ele Quer Desabilitar a Tecla Tab(Qual o Componente), Se e Em Toda aplicação(Ou Num Componente Especifico) etc...


GOSTEI 0
Paulo_amorim

Paulo_amorim

29/03/2004

ninguem testou a minha dica. :cry:


Olá

Putz desculpa Fabio!!!!eu nao citei vc!! mas eu testei sim efunciona perfeitamente!

Desculpas :oops:


GOSTEI 0
Braytiner Heggendorn

Braytiner Heggendorn

29/03/2004

Galera encontrei um jeito não de desabilitar o TAB, mas sim de voltar obter a tecla, No evento OnKeyUp do Form a tecla é detectada diferentemente do OnKeyPress e OnKeyDown, aí é só fazer

if (Key = VK_TAB) and (Shift <> [ssShift]) then
begin
if ActiveControl.TabOrder > 0 then
SelectNext(ActiveControl, False, True);
Key:=VK_NONAME;
end;


GOSTEI 0
POSTAR