Tab por Enter em BitBtn

31/01/2010

2

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?
Responder

Posts

01/02/2010

Alison Bissoli

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
Responder
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?

Responder

01/02/2010

Alison Bissoli

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.
Responder

01/02/2010

Ricardo Araujo

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.
Responder