Una alternativa usando solamente parámetros es utilizar dos parámetros, uno que indica que muestre todos y otro para filtrar directamente los datos que queremos
Código SQL
[-]select proyectos, categorias, count(categorias)
from proyectos
where :todos or proyectos=:miParametro
group by proyectos, categorias
y en el codigo de busqueda:
Código Delphi
[-]procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Close;
if Edit1.Text = EmptyStr then
ADOQuery1.Parameters.ParamByName('todos').Value := 1
else begin
ADOQuery1.Parameters.ParamByName('todos').Value := 0
ADOQuery1.Parameters.ParamByName('miParametro').Value := Edit1.Text;
end;
ADOQuery1.Open;
end;