Hola que tal, creo que se podría construir la consulta de forma dinámica levantando el filtro de el stringlist, por ejemplo supongamos que en el stringlist almacenas los campos clave, que para el ejemplo vamos a decir que son integer:
// Retorna un string con la consulta a ejecutar
function Crea_Filtro:string;
var x:integer;
aux:string;
begin
aux:='';
if (strlis.count>0) then begin
aux:='campoclave='+strlis[0]+')';
if (strlis.count>1) then
for x:= 1 to (StrLis.count-1) do begin
aux:=aux+' or (campoclave='+strlis[x]+')';
end;
end;
result:=aux;
end;
function Crea_Consulta:string;
var aux:string;
begin
result:='Select * from Tabla';
aux:='';
aux:=Crea_Filtro;
if (length(aux)>0) then begin
result:=result+' where '+aux;
end;
end;
Por lo que la función Crea_Consulta te retorna la consulta que debes ejecutar, o sea haces algo así como:
..
DataSet.close; // por si lo tenías abierto de antes
DataSet.SQL.clear;
DataSet.SQL.text:=Crea_Consulta;
DataSet.open;
..
Saludos y cruzo los dedos para que funcione (no lo probé)
