Creo que ya sé...
A ver...
Construye toda tu consulta sin parámetros y en el query pones la propiedad ParamCheck a False y ahora si le pones como te recomendé en mi primer respuesta
Código Delphi
[-]... + '# AND horaprog<=#' + TimeToStr(TimeHoraProg) + '#';
Ahora si con TimeToStr o más bien, como en tu pregunta con la que abres el hilo
Código Delphi
[-]
Adoquery1.SQL.Text:='SELECT * FROM log WHERE destinatario=' +
quotedstr(adoquery2.FieldByName('Usuario').AsString) +
' AND leido=false AND (fechaprog<=#'+datetostr(date) +
'# AND horaprog<=#'+timetostr(time)+'#)';
Creo que así lo resolví...
Lo que pasa es que tienes razón, los dos puntos de la hora los confunde con parámetros y se hace bolas, al poner ParamCheck a False queda inhabilitado el uso de parámetros, pero si construyes tu Select como en esta última opción no tendrás problemas.