Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

flavioavilela

evento keypress e keydown

Recommended Posts

galera, é o seguinte... tem dois códigos

 

procedure TFrmEntrada_Produtos.EdtCodigoKeyPress(Sender: TObject;
  var Key: Char);
begin
	if (key = #13) then
	begin
	nota:= EdtN_Nota_Fiscal.Text;
	  if not DM.qryProdutos.Locate('Codigo_Produto', EdtCodigo.Text,[]) then
		  begin
			ShowMessage('Produto não encontrado ou não está cadastrado. Por favor, verifique e tente novamente');
			EdtCodigo.SetFocus;
			EdtCodigo.Clear;
		  end
	  else
		  begin
			codigo:= EdtCodigo.Text;
			EdtNome.Text:= DM.qryprodutosNome.Value;
			EdtValor_Unitario.Text:= DM.qryprodutosValor_Venda.AsString;
			EdtQuantidade.SetFocus;
		  end;
	end;
end;

e o outro é:

 

procedure TFrmEntrada_Produtos.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = VK_F3 then
	FrmConsulta_Rapida_Produtos.ShowModal;
end;

bem...

ai é o seguinte: eu coloquei o evento KeyPress do meu form como True, pois, quando eu desse F3 no teclado, ele aparecesse uma janelinha de consulta de produtos que eu tenho..... só que: quando eu coloquei no meu form o evento KeyPress como True, o primeiro código deixa de funcionar... tipo assim: o primeiro código, eu digito um código de um produto num edit, e ele automaticamente, se tiver esse produto cadastrado, joga o codigo, o nome e o valor dele.... e assim q eu coloquei o evento KeyPress como True, não funcionou mais... o F3 funcionou, mas ele jogar os dados automático, q é o primeiro código ai, não funcionou.....

 

alguém pode me ajudar, por favor??????

Compartilhar este post


Link para o post
Compartilhar em outros sites
  flavioavilela disse:

galera, é o seguinte... tem dois códigos

 

procedure TFrmEntrada_Produtos.EdtCodigoKeyPress(Sender: TObject;
  var Key: Char);
begin
	if (key = #13) then
	begin
	nota:= EdtN_Nota_Fiscal.Text;
	  if not DM.qryProdutos.Locate('Codigo_Produto', EdtCodigo.Text,[]) then
		  begin
			ShowMessage('Produto não encontrado ou não está cadastrado. Por favor, verifique e tente novamente');
			EdtCodigo.SetFocus;
			EdtCodigo.Clear;
		  end
	  else
		  begin
			codigo:= EdtCodigo.Text;
			EdtNome.Text:= DM.qryprodutosNome.Value;
			EdtValor_Unitario.Text:= DM.qryprodutosValor_Venda.AsString;
			EdtQuantidade.SetFocus;
		  end;
	end;
end;

e o outro é:

 

procedure TFrmEntrada_Produtos.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = VK_F3 then
	FrmConsulta_Rapida_Produtos.ShowModal;
end;

bem...

ai é o seguinte: eu coloquei o evento KeyPress do meu form como True, pois, quando eu desse F3 no teclado, ele aparecesse uma janelinha de consulta de produtos que eu tenho..... só que: quando eu coloquei no meu form o evento KeyPress como True, o primeiro código deixa de funcionar... tipo assim: o primeiro código, eu digito um código de um produto num edit, e ele automaticamente, se tiver esse produto cadastrado, joga o codigo, o nome e o valor dele.... e assim q eu coloquei o evento KeyPress como True, não funcionou mais... o F3 funcionou, mas ele jogar os dados automático, q é o primeiro código ai, não funcionou.....

 

alguém pode me ajudar, por favor??????

 

 

 

 

Então....

Para esse código ai funcionar basta colocar assim:

 

 

procedure TFrmEntrada_Produtos.EdtCodigoKeyPress(Sender: TObject;
  var Key: Char);
begin
	if (key = #13) then
	begin
	nota:= EdtN_Nota_Fiscal.Text;
	  if not DM.qryProdutos.Locate('Codigo_Produto', EdtCodigo.Text,[]) then
		  begin
			ShowMessage('Produto não encontrado ou não está cadastrado. Por favor, verifique e tente novamente');
			EdtCodigo.SetFocus;
			EdtCodigo.Clear;
		  end
	  else
		  begin
			codigo:= EdtCodigo.Text;
			EdtNome.Text:= DM.qryprodutosNome.Value;
			EdtValor_Unitario.Text:= DM.qryprodutosValor_Venda.AsString;
			EdtQuantidade.SetFocus;
		  end;
	end;
end;

 

procedure TFrmEntrada_Produtos.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = VK_F3 then
	FrmConsulta_Rapida_Produtos.ShowModal;
end;

 

Quando o F3 funciona ele tira o focus do editcodigo, fazendo com que não funcione o primeiro código nele....

 

Eu simplesmente fiz com que ele receba o focu depois que for exibida a tela de consulta rápida....

 

Outra forma de fazer isso seria colocando um código para pegar o fechamento do frmconsulta...

Assim:

 

procedure TFrmEntrada_Produtos.FormClose(Sender: TObject;

var Action: TCloseAction);

begin

EdtCodigo.setfocus;

end;

 

procedure TFrmEntrada_Produtos.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = VK_F3 then
	FrmConsulta_Rapida_Produtos.ShowModal;
  FrmConsulta_Rapida_Produtos.OnClose:=FormClose;
end;

procedure TFrmEntrada_Produtos.EdtCodigoKeyPress(Sender: TObject;
  var Key: Char);
begin
	if (key = #13) then
	begin
	nota:= EdtN_Nota_Fiscal.Text;
	  if not DM.qryProdutos.Locate('Codigo_Produto', EdtCodigo.Text,[]) then
		  begin
			ShowMessage('Produto não encontrado ou não está cadastrado. Por favor, verifique e tente novamente');
			EdtCodigo.SetFocus;
			EdtCodigo.Clear;
		  end
	  else
		  begin
			codigo:= EdtCodigo.Text;
			EdtNome.Text:= DM.qryprodutosNome.Value;
			EdtValor_Unitario.Text:= DM.qryprodutosValor_Venda.AsString;
			EdtQuantidade.SetFocus;
		  end;
	end;
end;

 

 

fazendo um desses dois, resolve o seu caso.... Vlw, Um grande abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeira pergunta que faço sempre nestes casos: efetuou um debug no código? Verificou se os eventos estão ligados corretamente entre o componente e a procedure?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.