Tab por Enter em BitBtn

Delphi

31/01/2010

Olá rapaziada estou usando o seguinte procedimento para mudar o tab pelo enter no formulário:

procedure TFormBanco.FormKeyPress(Sender: TObject; var Key: Char);
begin
 If Key = #13 then
 begin
  Key := #0;
  Perform(WM_NEXTDLGCTL, 0, 0);
  If (ActiveControl is TBitBtn) then
   Perform(VK_TAB, 0, 0);
 end;
end;

Só que quando chega em um componente do tipo BitBtn para de funcionar este procedimento.
Alguém sabe o que devo fazer?
Leandro Carvalho

Leandro Carvalho

Curtidas 0

Respostas

Alison Bissoli

Alison Bissoli

31/01/2010

Qual seria o intúito deste tratamento justamente para TBitBtn, esperimente tirá-lo. If (ActiveControl is TBitBtn) then
   Perform(VK_TAB, 0, 0);     http://garotodesktop.blogspot.com
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

31/01/2010

não sei, mas acho que não faz o mínimo sentido isso funcionar num botão qualquer.

quando se está num botão, o ENTER aciona o botão e não pula para outro TWinControl.
se, no botão, fosse feita essa troca, como o botão seria acionado? com a barra de espaço?

GOSTEI 0
Alison Bissoli

Alison Bissoli

31/01/2010

não tinha pensado nisso não, deve ser por isso mesmo o tratamento, pra quando estiver no bitbtn ele fazer o evento do botão, não anular a tecla pressionada, realmente, não faz sentido funcionar enter como tab em um componente que necessita do enter.
GOSTEI 0
Ricardo Araujo

Ricardo Araujo

31/01/2010

pode usar assim também que funcionar.

procedure TFrmCadastroPadrao.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = VK_RETURN then
    SelectNext(ActiveControl, true, true);
end;

só não esqueça de ativar a propriedade Keypreview.
GOSTEI 0
POSTAR