Si quieres seguir con los OR yo tuve un problema parecido hace poco, lo solucioné usando una cadena, que era la condición autogenerada, e incrustandola en el SQL.
Código Delphi
[-]
if Cadena='' then Cadena:='Campo='+valor;
else cadena:=Cadena+' or Campo='+valor;
DataSet.SQL:='SELECT FROM (todo lo que vaya aqui) WHERE '+Cadena;
Y con respecto a la multiselección, por qué no haces un Array dinámico en el evento que sea necesario (OnSelectRow quizá? no tengo el delphi delante para mirar xD) con los registros que selecciones, luego es solo hacer un bucle for.