GARANTIR DESCONTO

Fórum Problema com MessageBeep #374110

26/08/2009

0

Tenho uma aplicação em que uso o enter como TAB e tambem para pesquisa!

Toda vez que eu teclo ´Enter´, o sistema da o bep do windows!!

No evento OnKeyPress do Form eu jogo o foco para o próximo campo e no evento OnKeyPress do Edit eu faço a busca conforme exemplo abaixo!!!

São muitos edits em que eu tenho que usar o keypress para pesquisa, por isso não posso alterar na mão cada um deles!!!
Mudando o key como ´#0´ no Keypress do form não resolve!!!
Preciso dar um jeito nisso... alguem pode me ajudar???


[color=darkblue:a861af2d99]procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
case key of
13: Perform(WM_NEXTDLGCTL,0,0);
27: Close;
end;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key = 13 then
begin
Buscar_Registros(Edit1.Text);
AtualizaTela;
end;
end;[/color:a861af2d99][color=darkblue:a861af2d99][/color:a861af2d99]


Lucas_sistemas

Lucas_sistemas

Responder

Posts

28/08/2009

Carlosrm

lucas_sistemas,

testei apenas no Delphi 7:


procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
   case key of
     #13: begin
           Key := 0;
           Perform(WM_NEXTDLGCTL,0,0);
          end;
     27: Close;
   end;
end;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = 13 then
  begin
    showmessage(´Ôba!´);  //Buscar_Registros(Edit1.Text);
    showmessage(´Ôba! Ôba! Ôba! Ôba!´);  //AtualizaTela;
  end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
   showmessage(´Bambalalão!´);
   Perform(WM_NEXTDLGCTL,0,0);
end;



1) Troquei o evento EditKeyPress pelo EditKeyDown. Necessário trocar o tipo de dado do parâmetro (13, vk_return,...). Digitei uma vez no EditKeyDown e apontei os outros edits para lá;
2) No evento FormKeyPress, acrescentei a linha ´key := #0´ que é a instrução que ´desliga´ o beep, nesse caso;
3) Acrescentei um Bitbtn no form, que é um componente que também recebe foco, igual às Edits. Coloquei no (primeiro e último) evento do Bitbtn a mesma instrução final para passar para o próximo foco.

Espero ter ajudado em algo.
carlosrm


Responder

Gostei + 0

28/08/2009

Rweberich

Bom dia Lucas,

[color=darkblue:1d9c179345]procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin case key of #13: Perform(WM_NEXTDLGCTL,0,0); 27: Close; end; end; [/color:1d9c179345][color=darkblue:1d9c179345][/color:1d9c179345]



..é falcil de resolver:

1º - Na propriedade ´KeyPreview´ do formulario vc coloca ´True´.
2º - No evento OnKeyPress do formulario vc informa o seguinte codigo:

[b:1d9c179345]procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = 13 then
begin
Key := 0;
Perform(WM_NextDlgCtl, 0, 0);
end;
end;[/b:1d9c179345]

Abraco.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar