Hola radenf.
El código que te sugirió
Casimiro hace exáctamente lo que deseas. También coincido con él, que el problema pasa por donde estas realizando la captura del evento de teclado.
Para asegurarte que el evento de teclado es capturado correctamente proba de este modo:
Código Delphi
[-]
...
procedure El_Form.FormCreate(Sender: TObject);
begin
KeyPreview := True; end;
procedure El_Form.FormKeyPress(Sender: TObject; var Key: Char);
begin
if (ActiveControl = El_DBGrid) and (Upcase(Key) in['A'..'Z']) then
Tabla_o_Query.Locate('NOMBRE_DEL_CAMPO', Key, [loPartialKeylo, CaseInSensitive]); end;
...
Saludos.