Hola aromigaret.
Cita:
Empezado por aromigaret
...quisiera saber si hay algún buffer o función que examinar en el dbrid para tomar lo que se carga y no una letra por letra
|
No voy a omitir opinión sobre el modo de ingreso y tampoco sé si esta opción es mejor que lo que has implementado. Pero respondiendo a tu consulta, creo que podrías usar el objeto
TInplaceEdit de modo similar a este ejemplo :
Código Delphi
[-]
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
var
s : string;
begin
if DBGrid1.EditorMode and (DBGrid1.SelectedField.FieldName = 'ARTICULO') then
begin
s := TInPlaceEdit(DBGrid1.Controls[0]).Text;
if Key in ['A'..'Z','Á','É','Í','Ú','Ñ'] then s := s + Key
else if Key = #8 then
Delete(s, Length(s), 1);
tuQuery.Close;
tuQuery.SQL.Clear;
tuQuery.SQL.Add('SELECT ARTICULO, STOCK, PRECIO, IVA FROM PRODUCTO');
tuQuery.SQL.Add('WHERE ARTICULO LIKE :DET ORDER BY ARTICULO');
tuQuery.ParamByName('DET').AsString := s + '%';
tuQuery.Open;
end;
end;
Salida:
De todos modos, recuerda que si estas trabajando en red, las búsquedas incrementales pueden tornar todo lento ya que aumentan el tráfico desde y hacia el servidor.
Saludos
