Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Moverme por un dbgrid y seleccionar una fila (https://www.clubdelphi.com/foros/showthread.php?t=39114)

JoanKa 10-01-2007 22:55:12

Moverme por un dbgrid y seleccionar una fila
 
Hola a todos.

A ver si me hechan un cable...

Tengo un EDIT en el cual tengo una rutina de busqueda, y debajo de ésta tengo un DBGRID el cual me filtra los resultados que yo escriba en el edit.

Lo que me pasa es que para yo seleccionar un articulo del DBGRID tengo que hacer un click con el mouse, pero yo quisiera darle mayor rapidez, es decir, por ejemplo que este buscando todos los "mouses" entonces cuando escriba la "m" en el DBGRID me salgan todos los articulos que contenga la "m" y asi sucesivamente.

Pero como puedo hacer para que cuando yo escriba una o varias letras en el EDIT me situe en la primera coincidencia del DBGRID y luego pueda moverme con la tecla de arriba y abajo , y luego seleccionar con la tecla intro el articulo que yo desee, lo que pasa ahorita es que para seleccionar un articulo tengo que darle un click y eso no quiero.

Como se puede hacer esto, derrepente es algun truquillo o algun evento.

Gracias y saludos

roman 10-01-2007 23:21:42

No sé si entiendo bien lo que quieres, pero podrías detectar las teclas de dirección en el evento OnKeyDown del Edit para "redireccionarlas" al DBGrid y colocar el foco en éste:

Código Delphi [-]
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if Key in [VK_DOWN, VK_UP] then
  begin
    // poner el foco en el dbgrid
    DBGrid1.SetFocus;

    // simular la tecla
    keybd_event(Key, 0, 0, 0);
    keybd_event(Key, 0, KEYEVENTF_KEYUP  , 0);
  end;
end;

// Saludos

JoanKa 10-01-2007 23:31:29

OK Roman Gracias eso es lo que queria, pero solo puedo seleccionar una fila con un click y yo quisiera seleccionarlo con un INTRO.

Yo solo puedo seleccionar una fila del DBGRID con el click del mouse, ya que en el evento onCellClick del DBGRID tengo esto:

procedure TFRM_Busqueda_Articulos.DBG_ArticulosCellClick(Column: TColumnEh);
begin
EDT_Codigo.Text := DBG_Articulos.Fields[0].Value;
EDT_Descripcion.Text := DBG_Articulos.Fields[1].Value;
EDT_Precio_Unitario.Text := FormatFloat(',0.00',DBG_Articulos.Fields[3].Value);
EDT_Cantidad.SetFocus;
end;

¿Como se puede seleccionar una fila presionando INTRO??

Gracias

Crandel 11-01-2007 01:35:41

Cita:

Empezado por JoanKa
¿Como se puede seleccionar una fila presionando INTRO??

Puedes usar el evento de onKeyDown o onKeyPress y preguntar algo asi:
Código Delphi [-]
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_RETURN then  ..... ;
end;


La franja horaria es GMT +2. Ahora son las 22:52:03.

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