Número das Setas Direcionais

Delphi

14/07/2003

Olá pessoal,

Gostaria de saber quais os números das setas direcionais, pois preciso colocar no evento OnKeyPress de uma DBGrid para realizar consultas navegando entre os registros, para evitar q o usuário utilize o mouse.

Grato,

Ilano.


Ilanocf

Ilanocf

Curtidas 0

Respostas

Oberdan

Oberdan

14/07/2003

No evento onkeyup você coloca

if key = vk_up //pra cima
vk_down //pra baixo
vk_left //pra esquerda
vk_right // pra direita

[]
Oberdan :!:


GOSTEI 0
Ilanocf

Ilanocf

14/07/2003

Não está dando muito certo, pois ao apertar a seta para baixo o cursos vai sempre para o primeiro registro do DBGrid, q está conectado à consulta. Veja como está meu código:

If key = vk_up Then
Begin
If RadioGroup1.ItemIndex = 0 Then
Begin
DMDados.ConsLivros.Close;
DMDados.ConsLivros.SQL.Clear;
DMDados.ConsLivros.SQL.Add(´SELECT * FROM TBLivros WHERE TituloDaObra LIKE:P1 ORDER BY TituloDaObra´);
DMDados.ConsLivros.ParamByName(´P1´).Value:=Edit1.Text + ´¬´;
DMDados.ConsLivros.Open;
DMDados.Relacao.Close;
DMDados.Relacao.SQL.Clear;
DMDados.Relacao.SQL.Add(´SELECT * FROM TBAutores WHERE CodigoDoLivro=:T´);
DMDados.Relacao.ParamByName(´T´).Value:=StrToIntDef(DBEdit1.Text, 0);
DMDados.Relacao.Open
End
Else
If RadioGroup1.ItemIndex = 1 Then
Begin
DMDados.ConsLivros.Close;
DMDados.ConsLivros.SQL.Clear;
DMDados.ConsLivros.SQL.Add(´SELECT * FROM TBLivros WHERE ISBN LIKE:P1 ORDER BY TituloDaObra´);
DMDados.ConsLivros.ParamByName(´P1´).Value:=´¬´+Edit1.Text + ´¬´;
DMDados.ConsLivros.Open;
DMDados.Relacao.Close;
DMDados.Relacao.SQL.Clear;
DMDados.Relacao.SQL.Add(´SELECT * FROM TBAutores WHERE CodigoDoLivro=:T´);
DMDados.Relacao.ParamByName(´T´).Value:=StrToIntDef(DBEdit1.Text, 0);
DMDados.Relacao.Open;
End
End
Else
If key = vk_down Then
Begin
If RadioGroup1.ItemIndex = 0 Then
Begin
DMDados.ConsLivros.Close;
DMDados.ConsLivros.SQL.Clear;
DMDados.ConsLivros.SQL.Add(´SELECT * FROM TBLivros WHERE TituloDaObra LIKE:P1 ORDER BY TituloDaObra´);
DMDados.ConsLivros.ParamByName(´P1´).Value:=Edit1.Text + ´¬´;
DMDados.ConsLivros.Open;
DMDados.Relacao.Close;
DMDados.Relacao.SQL.Clear;
DMDados.Relacao.SQL.Add(´SELECT * FROM TBAutores WHERE CodigoDoLivro=:T´);
DMDados.Relacao.ParamByName(´T´).Value:=StrToIntDef(DBEdit1.Text, 0);
DMDados.Relacao.Open
End
Else
If RadioGroup1.ItemIndex = 1 Then
Begin
DMDados.ConsLivros.Close;
DMDados.ConsLivros.SQL.Clear;
DMDados.ConsLivros.SQL.Add(´SELECT * FROM TBLivros WHERE ISBN LIKE:P1 ORDER BY TituloDaObra´);
DMDados.ConsLivros.ParamByName(´P1´).Value:=´¬´+Edit1.Text + ´¬´;
DMDados.ConsLivros.Open;
DMDados.Relacao.Close;
DMDados.Relacao.SQL.Clear;
DMDados.Relacao.SQL.Add(´SELECT * FROM TBAutores WHERE CodigoDoLivro=:T´);
DMDados.Relacao.ParamByName(´T´).Value:=StrToIntDef(DBEdit1.Text, 0);
DMDados.Relacao.Open;
End;
End;

Quero q ao passar para o próximo registro ele permaneça lá e realize a consulta e não voltar sempre para o primeiro registro.


GOSTEI 0
Sandra

Sandra

14/07/2003

If key = vk_up Then Begin . . . If key = vk_down Then Begin . . . End;


Ilano,


Key =
37 : para esquerda;
38 : para cima;
39 : para direita;
40 : para baixo.


Tente dessa maneira:

- coloque seu código no OnKeyDown do DBGrid

OU

- no OnKeyPress do form (alterar o KeyPreview para True).



Boa sorte!


GOSTEI 0
POSTAR