Não sair do Grid ao apertar enter.
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?
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
Curtidas 0
Respostas
Luiz Menin
13/11/2012
Tente utilizar o evento OnKeyPress.
if Key = #13 then Tabela.Insert;
GOSTEI 0
Rafael Fekete
13/11/2012
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;
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;
GOSTEI 0
Luiz Menin
13/11/2012
Provavelmente o erro esteja aí.
Faça um teste com esse código que te passei e fale o resultado.
Faça um teste com esse código que te passei e fale o resultado.
GOSTEI 0
Rafael Fekete
13/11/2012
Não Funciona! "/
Continua saindo do grid quando subo a linha e aperto enter!
Não seria algo no KeyUp?
Continua saindo do grid quando subo a linha e aperto enter!
Não seria algo no KeyUp?
GOSTEI 0
Claudia Nogueira
13/11/2012
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:
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;
GOSTEI 0
Deivison Melo
13/11/2012
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,
GOSTEI 0
Rafael Fekete
13/11/2012
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.
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.
GOSTEI 0
Claudia Nogueira
13/11/2012
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.
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.
GOSTEI 0
Rafael Fekete
13/11/2012
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! :)
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! :)
GOSTEI 0
Claudia Nogueira
13/11/2012
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:
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. :)
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. :)
GOSTEI 0
Rafael Fekete
13/11/2012
Funcionou! porém coloquei as regras no keydown do form.
Obrigado! :)
Obrigado! :)
GOSTEI 0