Hola Oscar.
Un problema del método
Locate, es que si no es aplicado sobre un campo índice, realiza la búsqueda secuencialmente y no te permite como bién lo has mencionado encontrar caracteres en cualquier posición del campo.
Particularmente veo mucho más símple utilizar una consulta para lo que deseas hacer:
Código Delphi
[-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
with tuQry do
begin
Close;
SQL.Clear;
SQL.Text:= 'SELECT * FROM TU_TABLA WHERE NOMBRE LIKE :BUSCADO';
ParamByName('BUSCADO').AsString:= '%'+Edit1.Text+'%';
Open;
end;
end;
De todos modos las búsquedas incrementales de ninguna manera son eficientes, e incrementan mucho el tráfico en el servidor.
Saludos.