Pesquisando com dbgrid
Olá amigos, como iniciante em delphi, recorro a vocês para o seguinte:
Como programava em DOS, em uma lista de clientes por exemplo, ia digitando o nome do cliente e o sistema ia se posicionando ao que perto se assemelhava, como já estava em cima do nome, dava enter e carregava aquele cliente.
Como poderia fazer isso em delphi, coloquei um dbgrid e um edit, vou digitando no edit e o sistema filtra corretamente através de instrução sql, só que o usuário é obrigado a dar um clique sobre o cliente que aparece no dbgrid para selecioná-lo, teria como digitar a procura sob o dbgrid, aí o foco já estaria no dbgrid e estaria resolvido.
Na verdade, essa é uma necessidade que temos em usuários de pequenas empresa, que são inimigos de mouse, então o que podermos fazer para facilitar, eles agradecem.
Espero contar com ajuda de vocês.
Uso delphi 7, dbexpress e firebird
Obrigado
Mario
Como programava em DOS, em uma lista de clientes por exemplo, ia digitando o nome do cliente e o sistema ia se posicionando ao que perto se assemelhava, como já estava em cima do nome, dava enter e carregava aquele cliente.
Como poderia fazer isso em delphi, coloquei um dbgrid e um edit, vou digitando no edit e o sistema filtra corretamente através de instrução sql, só que o usuário é obrigado a dar um clique sobre o cliente que aparece no dbgrid para selecioná-lo, teria como digitar a procura sob o dbgrid, aí o foco já estaria no dbgrid e estaria resolvido.
Na verdade, essa é uma necessidade que temos em usuários de pequenas empresa, que são inimigos de mouse, então o que podermos fazer para facilitar, eles agradecem.
Espero contar com ajuda de vocês.
Uso delphi 7, dbexpress e firebird
Obrigado
Mario
![Aldus Aldus](https://www.devmedia.com.br/imagens/fotoscolunistas/avatar/avatar-4.png)
Aldus
Curtidas 0
Respostas
![Vinicius2k Vinicius2k](https://www.devmedia.com.br/imagens/fotoscolunistas/avatar/avatar-2.png)
Vinicius2k
04/09/2004
Colega,
Tente usar sua DBGrid com a opção ´AlwaysShowSelection´ como ´True´...
Isto causa um efeito visual, mas é, digamos, desnecessário... o ponteiro já está posicionado no registro desejado, e creio o seu evento do TEdit que dispara a seleção do cliente seria executado normalmente, a não ser que exista alguma particularidade que vc não mencionou...
Espero ter ajudado...
T+
Tente usar sua DBGrid com a opção ´AlwaysShowSelection´ como ´True´...
Isto causa um efeito visual, mas é, digamos, desnecessário... o ponteiro já está posicionado no registro desejado, e creio o seu evento do TEdit que dispara a seleção do cliente seria executado normalmente, a não ser que exista alguma particularidade que vc não mencionou...
Espero ter ajudado...
T+
GOSTEI 0
![Carlos Bernardo Carlos Bernardo](http://www.devmedia.com.br/imagens/fotoscolunistas/236151_20150125161825.jpg)
Carlos Bernardo
04/09/2004
Eu uso assim...
Se o cara pressionar o enter do edit1
no evento onkeypress do edit
if Key = #13 then
begin
Perform( WM_NEXTDLGCTL, 0, 0 );
Key := 0;
dbgrid1.OnColExit(form2);
end;
se o cara pressionar as teclas <UP> ou <DOWN>
no evento onkeydown do edit
if key = vk_down then
begin
dbgrid1.SetFocus;
dm.tblProduto.Next;
end;
if key = vk_up then
begin
dbgrid1.SetFocus;
dm.tblProduto.Prior;
end;
e caso ele vá até o registro q quer selecionar pelo dbgrid, então:
no evento oncolexit do dbgrid :
fPedidoVenda.Enabled := True;
fPedidoVenda.dbgrid1.columns[0].field.text := dbgrid1.Columns[0].field.Text;
self.close;
no evento onkeydown do dbgrid :
case key of
13 : Key := 9;
end;
if (Shift = [ssCtrl]) and (Key = 46) Then
KEY := 0;
é mais ou menos isso, se tiver alguma dúvida, manda ae...
Se o cara pressionar o enter do edit1
no evento onkeypress do edit
if Key = #13 then
begin
Perform( WM_NEXTDLGCTL, 0, 0 );
Key := 0;
dbgrid1.OnColExit(form2);
end;
se o cara pressionar as teclas <UP> ou <DOWN>
no evento onkeydown do edit
if key = vk_down then
begin
dbgrid1.SetFocus;
dm.tblProduto.Next;
end;
if key = vk_up then
begin
dbgrid1.SetFocus;
dm.tblProduto.Prior;
end;
e caso ele vá até o registro q quer selecionar pelo dbgrid, então:
no evento oncolexit do dbgrid :
fPedidoVenda.Enabled := True;
fPedidoVenda.dbgrid1.columns[0].field.text := dbgrid1.Columns[0].field.Text;
self.close;
no evento onkeydown do dbgrid :
case key of
13 : Key := 9;
end;
if (Shift = [ssCtrl]) and (Key = 46) Then
KEY := 0;
é mais ou menos isso, se tiver alguma dúvida, manda ae...
GOSTEI 0