Fórum Não sair do Grid ao apertar enter. #428703
13/11/2012
0
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
Curtir tópico
+ 0Posts
13/11/2012
Luiz Menin
if Key = #13 then Tabela.Insert;
Gostei + 0
13/11/2012
Rafael Fekete
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
13/11/2012
Luiz Menin
Faça um teste com esse código que te passei e fale o resultado.
Gostei + 0
13/11/2012
Rafael Fekete
Continua saindo do grid quando subo a linha e aperto enter!
Não seria algo no KeyUp?
Gostei + 0
13/11/2012
Claudia Nogueira
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
13/11/2012
Deivison Melo
Gostei + 0
14/11/2012
Rafael Fekete
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
14/11/2012
Claudia Nogueira
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;
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
14/11/2012
Rafael Fekete
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
16/11/2012
Claudia Nogueira
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
20/11/2012
Rafael Fekete
Obrigado! :)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)