Si le pones al TQuery su propiedad Active:= False, el DBGrid debe aparecer vacío.
Para llenarlo haces la operación inversa, es decir:
Para que no se repitan los registros podrías utilizar
antes de ingresar un nuevo valor en el Edit1.
Ve tú en que eventos de tu código quedan mejor, para lograr tu objetivo.
Si deseas que las diferentes búsquedas se coloquen una tras otra, entonces este procedimiento no te sirve, ya que el DBGrid estaría mostrando sólo los registros que devuelve el Query, por lo que creo que deberás crear una instancia intermedia, que vaya almacenando los registros y los muestre en el DBGrid. Se me ocurre que podrías usar una Tabla temporal o un StringList.
Saludos