Fórum enter X Dbgrid. #210307

29/01/2004

0

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


Eric.miranda

Eric.miranda

Responder

Posts

30/01/2004

Catunda

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar