Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   busquedas con codigo delphi (https://www.clubdelphi.com/foros/showthread.php?t=47790)

ale_metall 06-09-2007 23:41:13

busquedas con codigo delphi
 
Hola amigos, solicito la ayuda de ustedes, estoy haciendo una aplcacion que maneja clientes y quiero hacer una busqueda por dni o apellido, en la que tengo un edit, para el dato buscado y un dbgrid. Necesito que este me muestre los datos que se asemejen a los ingresados en el edit. Pero el roblema es que quiero hacerlo para que me vaya mostrando a medida q voy tipeando eL dato a buscar y no cuando presiono un boton de "buscar", por lo que no se como hacerlo, no me sirve un table1.findkey o findnearest??? lo se hacer con esto pero necesito de un boton y en este caso no lo quiero!!

desde ya muchas gracias...

saludos

ContraVeneno 06-09-2007 23:56:08

Código Delphi [-]
procedure TfrmBuscar.edtBuscarKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if not dxgbuscar.DataSource.dataset.locate('CampoABuscar',edtBuscar.Text,[loCaseInsensitive, loPartialKey]) then begin
     //ShowMessage('No se encuentran registros');
   end; //fin if not
   if key=VK_Return then dxgbuscar.setfocus;
end;

ale_metall 07-09-2007 00:02:28

OK, pero donde lo llamo a ese procedimineto? No lo entiendo demasiado, pero lo queiro probar!!!

BlueSteel 07-09-2007 00:24:05

Hola ale_metall

lo que te dice contraveneno en el código que puso es que tienes que poner esto

Código Delphi [-]
if not dxgbuscar.DataSource.dataset.locate('CampoABuscar',edtBuscar.Text,[loCaseInsensitive, loPartialKey]) then begin
     //ShowMessage('No se encuentran registros');
   end; //fin if not
   if key=VK_Return then dxgbuscar.setfocus;

en el evento KeyPress de Edit (para el ejemplo llamado edtBuscar

espero que te sirva...

ale_metall 07-09-2007 00:43:40

error
 
aun no pude probarlo, cuando compilo me da un error en la siguiente linea:

if key=VK_Return then Dbgrid1.setfocus;

el error es de tipos incompatibles,

molesto de nuevo porque desconosco gran parte del codigo y no me doy cuenta del error!!

gracias... y perdon por molestar tanto!!!

ContraVeneno 07-09-2007 00:46:01

Vamos a ampliar un poco la descripción de mi amigo BlueSteel.

Solo voy a pedir un pequeño favor, hay que leer el código, no solo copiar y pegar.

Si te fijas, en la primer línea dice:
Código Delphi [-]
procedure TfrmBuscar.edtBuscarKeyDown(Sender: TObject; var Key: Word;  Shift: TShiftState);
Esto te indica, que se trata del evento "OnKeyDown" del control llamado "edtBuscar". El cuál tiene el prefijo "edt" indicando que es un TEdit.

Por lo tanto, cada que presiones una letra de este control, se ejecutará la instrucción "locate" que es la que se encarga de buscar en el TDBGrid (que en mi ejemplo, el dbgrid se llama "dxgBuscar")

Ya mas claro no puedo.

P.D. Al DBgrid no le puse dbgBuscar porque no es un DBGrid Normal... es un componente eXterno, pero igual y eso no interesa para este caso.

ContraVeneno 07-09-2007 00:52:22

Cita:

Empezado por ale_metall (Mensaje 229064)
aun no pude probarlo, cuando compilo me da un error en la siguiente linea:

if key=VK_Return then Dbgrid1.setfocus;

el error es de tipos incompatibles,

¿Seguro que lo pusiste en el evento "OnKeyDown"?

Si lo pusiste en el evento KeyPress, la cosa es distinta y te marcaría ese error...

Lo otro puede ser que no tengas la unidad donde estan definidos los "Virtual-Key Codes" que es donde se encuentra el "VK_Return" pero al ser esta la unidad de windows, no creo que ese sea el problema...

BlueSteel 07-09-2007 02:04:08

Cita:

Empezado por ContraVeneno (Mensaje 229066)
Esto te indica, que se trata del evento "OnKeyDown" del control llamado "edtBuscar".

suata... se me le fue ese detalle.. acostumbrado a poner todo en el onkeypress... :D

PS: Muy buena explicación...:p

ContraVeneno 07-09-2007 16:09:45

¡changos!, no me había fijado que dijiste "OnkEyPress" :p

Este..ahem... es en el "OnKeyDown" :cool:


La franja horaria es GMT +2. Ahora son las 13:25:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi