Fórum Não sair do Grid ao apertar enter. #428703

13/11/2012

0

Pessoal estou com o seguinte problema:

Em um grid, entro com o codigo do pruduto, apertando enter ele vai p linha abaixo, ate ai esta ok!

O problema é que usando a tecla para cima ele sobe a linha do produto acima claro, quando a alguma modificação nessa linha, aperto enter e ele vai p linha abaixo me dando opção de entrar com um novo produto, mas quando não tem alteração, apenas aperto para cima, sobe a linha e não aletro nada, se eu apertar enter ai, ele sai do grid, indo para o grid abaixo.

preciso apertar enter e ele adicionar uma linha, independente de haver alteração na linha acima ou nao!

Entenderam?
Rafael Fekete

Rafael Fekete

Responder

Posts

13/11/2012

Luiz Menin

Tente utilizar o evento OnKeyPress.


if Key = #13 then
  Tabela.Insert;


Responder

Gostei + 0

13/11/2012

Rafael Fekete

ja uso no meu evento keypress, tenho o seguinte codigo:

procedure TFrmOrcamento.GridItensKeyPress(Sender: TObject; var Key: Char);
begin
if Key = '.' then
Key := ','
else
if Key = '*' then
Key := #0
else
if Ord(Key) = 10 then
Key := #0
end;
Responder

Gostei + 0

13/11/2012

Luiz Menin

Provavelmente o erro esteja aí.
Faça um teste com esse código que te passei e fale o resultado.
Responder

Gostei + 0

13/11/2012

Rafael Fekete

Não Funciona! "/

Continua saindo do grid quando subo a linha e aperto enter!

Não seria algo no KeyUp?
Responder

Gostei + 0

13/11/2012

Claudia Nogueira

Tenta colocar no evento onEnter do grid o código: KeyPreview := False;
E no onExit := KeyPreview := True;

Pra inserir um registro quando estiver no último item do grid, dá pra colocar no onKeyPress do grid igual o colega citou, mas verificando se está no fim:

if Key = '.' then
Key := ','
else
if Key = '*' then
Key := #0
else
if Ord(Key) = 10 then
Key := #0
else
if (Key = #13) then
begin
if Tabela.State in [dsInsert, dsEdit] then
  Tabela.Post;
if (Tabela.RecordCount = Tabela.RecNo) then
  Tabela.Append;
Key := #0;
end;
Responder

Gostei + 0

13/11/2012

Deivison Melo

Quando estiver no grid modificar em tempo de execução a property: "KeyPreview" para false e quando estiver saindo do grid modificar novamente para true,
Responder

Gostei + 0

14/11/2012

Rafael Fekete

Claudia funcionou! ele não sai do grid.


Agora vem outra questão, quero que ao apertar enter em uma determinada coluna, ele passe para linha abaixo adicionando outro registro, e não correr todas as colunas ate a ultima para poder adicionar mais um registro.
Responder

Gostei + 0

14/11/2012

Claudia Nogueira

Tenta assim:

if Key = '.' then
Key := ','
else
if Key = '*' then
Key := #0
else
if Ord(Key) = 10 then
Key := #0
else
if (Key = #13) then
begin
if Tabela.State in [dsInsert, dsEdit] then
Tabela.Post;
Tabela.Append;
Key := #0;
end;


Claudia funcionou! ele não sai do grid.


Agora vem outra questão, quero que ao apertar enter em uma determinada coluna, ele passe para linha abaixo adicionando outro registro, e não correr todas as colunas ate a ultima para poder adicionar mais um registro.
Responder

Gostei + 0

14/11/2012

Rafael Fekete

Não funciona!

Veja bem!
começa com a coluna Item, depois vai p coluna codigo, dai tem mais umas 9 colunas.

quero que ao digitar o codigo, ele ja passe p linha abaixo adicionando outro item, sem percorrer ate o fim!
Entende?

desde ja Obrigadoo! :)

Responder

Gostei + 0

16/11/2012

Claudia Nogueira

Eu tinha entendido que você queria que adicionasse quando estivesse na última linha, pra inserir quando pressionar enter e quando o campo código estiver selecionado acho que esse código funciona:

  if Key = '.' then
    Key := ','
  else
  if Key = '*' then
    Key := #0
  else
  if Ord(Key) = 10 then
    Key := #0
  else
  if (Key = #13) and (DBGrid1.SelectedIndex = 1) then
  begin
    if Tabela.State in [dsInsert, dsEdit] then
      Tabela.Post;
    Tabela.Append;
    Key := #0;
  end;


Se o campo "codigo" for o segundo do DBGrid, então ele é Index = 1.
Se não for isso, aí explica novamente pra ver se eu entendo.
Hehehe. Loira mode on. :)
Responder

Gostei + 0

20/11/2012

Rafael Fekete

Funcionou! porém coloquei as regras no keydown do form.

Obrigado! :)


Responder

Gostei + 0

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

Aceitar