PDA

Ver la Versión Completa : Moverme por un dbgrid y seleccionar una fila


JoanKa
10-01-2007, 22:55:12
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:


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
¿Como se puede seleccionar una fila presionando INTRO??

Puedes usar el evento de onKeyDown o onKeyPress y preguntar algo asi:

procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_RETURN then ..... ;
end;