enter X Dbgrid.
Boa tarde pessoal estou com uma duvida e gostaria de saber se vcs podem me ajudar a resolver.. é o seguinte..
em um formulario tenho vários 3 dbgrids e outros edits.. estava querendo usar o enter para percorrer os campos mas o problema é o seguinte.. estou usando o seguinte código para ele pular de campo qdo for enter
no envento keydown do formulario
if (key = vk_return) then
perform(wm_nextdlgctl,0,0);
e mudo a propriedade keypreview do formulario para true... aí os enters funcionam normalmente para todos os edits..
queria tb usar enter dentro do dbgrid. para isso usei o seguinte código..
no envento onkeypress do dbgrid uso
if Key=#13 then
Begin
If DbGrid3.SelectedIndex<>4 Then
Begin
DbGrid3.SelectedIndex:=DbGrid3.SelectedIndex+1;
end
end;
aí vem o problema.. se a propriedade keypreview do formulário estiver true o enter dentro do dbgrid nao funciona e o contrario acontece se o keypreview estiver false ou seja o enters nos edits não funciom
já tentei usar essa tb no keydown do dbgrid
case key of
13 : Key := 9;
end;
mas acontece a mesma coisa..
Vcs podem me dar uma luz por favor..
Valeu
Eric
em um formulario tenho vários 3 dbgrids e outros edits.. estava querendo usar o enter para percorrer os campos mas o problema é o seguinte.. estou usando o seguinte código para ele pular de campo qdo for enter
no envento keydown do formulario
if (key = vk_return) then
perform(wm_nextdlgctl,0,0);
e mudo a propriedade keypreview do formulario para true... aí os enters funcionam normalmente para todos os edits..
queria tb usar enter dentro do dbgrid. para isso usei o seguinte código..
no envento onkeypress do dbgrid uso
if Key=#13 then
Begin
If DbGrid3.SelectedIndex<>4 Then
Begin
DbGrid3.SelectedIndex:=DbGrid3.SelectedIndex+1;
end
end;
aí vem o problema.. se a propriedade keypreview do formulário estiver true o enter dentro do dbgrid nao funciona e o contrario acontece se o keypreview estiver false ou seja o enters nos edits não funciom
já tentei usar essa tb no keydown do dbgrid
case key of
13 : Key := 9;
end;
mas acontece a mesma coisa..
Vcs podem me dar uma luz por favor..
Valeu
Eric
Eric.miranda
Curtidas 0
Respostas
Catunda
29/01/2004
caro eric,
o código para tratar a tecla enter deve ficar dentro do evento onKeyDown do DBGrid. Eu utilizo o seguinte código:
if (Chr(Key)<>#13) then exit;
if (DBGrid1.SelectedIndex+1<>DBGrid1.FieldCount) then
DBGrid1.SelectedIndex:=DBGrid1.SelectedIndex+1
else
begin
if (DBGrid1.SelectedIndex=DBGrid1.FieldCount-1) then
begin
IBCDS1.Next;
if IBCDS1.EOF then IBCDS1.Append;
DBGrid1.SelectedIndex:=DBGrid1.SelectedIndex-DBGrid1.FieldCount-1;
end;
end;
onde: IBCDS1 é o meu dataset.
com esse código vc não precisa preocupar-se com a qtde de colunas.
Obs: é necessário que acrescente a linha KeyPreview:=false no evento onEnter dos DBGrids e a linha KeyPreview:=true no evento onExit dos mesmos DBGrids.
o código para tratar a tecla enter deve ficar dentro do evento onKeyDown do DBGrid. Eu utilizo o seguinte código:
if (Chr(Key)<>#13) then exit;
if (DBGrid1.SelectedIndex+1<>DBGrid1.FieldCount) then
DBGrid1.SelectedIndex:=DBGrid1.SelectedIndex+1
else
begin
if (DBGrid1.SelectedIndex=DBGrid1.FieldCount-1) then
begin
IBCDS1.Next;
if IBCDS1.EOF then IBCDS1.Append;
DBGrid1.SelectedIndex:=DBGrid1.SelectedIndex-DBGrid1.FieldCount-1;
end;
end;
onde: IBCDS1 é o meu dataset.
com esse código vc não precisa preocupar-se com a qtde de colunas.
Obs: é necessário que acrescente a linha KeyPreview:=false no evento onEnter dos DBGrids e a linha KeyPreview:=true no evento onExit dos mesmos DBGrids.
GOSTEI 0