Fórum Trocar Tab por Enter em Form com GRID #9367
16/09/2009
0
Rogério Nascimento
Curtir tópico
+ 0Posts
16/09/2009
Rodrigo Mourão
Bem a principio seu processo esta correto. Da uma olhada nesta Quick Tips do Wesley Yamacak.
https://www.devmedia.com.br/articles/viewcomp.asp?comp=13787
Qualquer coisa estou as ordens !!
Gostei + 0
16/09/2009
Rogério Nascimento
Dei uma olhada, aparente o que estou fazendo é exatamente o que está lá, fiz aqui na tela, estou colocando os codigos para vc me ajudar.
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
Key := #0;
Perform(WM_NEXTDLGCTL,0,0);
end;
end;
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
DBGrid1.Perform(WM_KEYDOWN, VK_TAB, 0);
end;
Eu digito o enter, ele passa pelos campos certinho, entra no grid, mas qdo continuo dando o enter, ao inves de ele percorrer as colunas da Grid ele volta para o DBEdit EMP_NO, tem q ativar alguma propriedade no Grid ?
Abraços !!!
Ah, gostei muito de vc ter assumido o curso de OOP, você está de parabenz !!!
Gostei + 0
18/09/2009
Rodrigo Mourão
Bem eu vou testar isso aqui. Peço que aguarde um pouco !!1
Abs!
Gostei + 0
22/09/2009
Rodrigo Mourão
Bem vamos lá, eu não consegui fazer este efeito. Mas não adiante so tiver que não consegui, fui ver o por que. Rodei a VCL todo, cai em Mensagem do SO. rsrsrsrsr Doidera !!!
O fato é que quando colocamos o evento no OnKeyPress do FOrm para mudar o Enter por tab estamos usando o Perform. Este comendo enviar uma Mensagem para um controle, no caso WM_NEXTDLGCTL. Como estamos chamando o Perform de dentro do Form então este mensagem e enviada para o form que move o foco para o proximo controle no tab order.
Por isso temos que colocar o KeyPreview para true. Assim quando pressionamos um tecla com o foco no edit ele "repassa o pressionamento" para o form. O evento é chamado e o foco muda.
Agora quando colocamos o evcento no grid ele intercepta. Por isso que não rola.
Enfim, eu sou da opinião que tudo é possivel em Delphi mas isso é uma das coisas que daria um certo trabalho onde o custo beneficio nao compensaria.
Pode ser até aque alguém tenha um codigo simples que faça isso mas eu não encontrei.
Se ue puder ajudar em algo mais é so falar.
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
Gostei + 0
22/09/2009
Rodrigo Mourão
Eu sou chato cara, como disse tudo no Delphi e possivel e as vezes esta tão na cara mas tão na cara que a gente não vê.
Seleciona o DBGrid vai no evento OnEnter dele e coloca:
KeyPreview := False;
Agora vai no OnExit do DBGrid e coloca:
KeyPreview := True;
Testa e depois me fala !!!
Abs!!!
Gostei + 0
22/09/2009
Rogério Nascimento
Deu certo, é isto mesmo..perfeito !
Valeu meu amigo,
Obrigado pela atenção dada ao meu problema.
Abraços !!!
Gostei + 0
23/09/2009
Rodrigo Mourão
Abraço !!!
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)