Need Delphi 3 component providing simplified ad-hoc report filtering

I'd like to give my Delphi users a really easy way to do ad-hoc report
filtering.  (Actually, my *future* Delphi users - I have a client sort
of satisfied with an Access database I wrote, but I now want to port it
to a better language, and tomorrow my first copy of Delphi arrives!)

I've been reading about some ad-hoc query editors (such as Adhocery, MK
QueryBuilder, Shazam, Piparti) which allow the user to drag and drop
fields onto a criteria grid from a diagram displaying all the tables,
joins and fields from the report's original underlying query.

But my users will be intimidated if I confront them with a full-blown
diagram showing all the tables and joins from the report's underlying
query, and anyways, there's no need to take up all that screen real
estate with a complicated diagram if we assume that the tables and joins
of the report's original underlying query are NOT what we want to let
them edit at run time (we just want to let them narrow the original
report query a bit with some ad hoc criteria).  

The users tend to think in terms of "Let me print an Orders report just
for the London Office" Assuming that the set of tables making up the
underlying query for this particular report is FIXED, the criteria for
this kind of ad hoc query could actually be built by offering the user
just three (linked) list controls:  a dropdown list containing all the
tables from the original query underlying the report, another dropdown
list containing each table's searchable (indexed?) fields, and finally a
listbox containing actual field values for the table/field combination
selected in the preceding two listboxes.  

It's this third feature which most QBE grids seem to lack: the user has
to type something like

   = "London"

into a text box in the grid.  Using a dropdown list (possibly even
multiselect somehow?) in place of a mere text box would make it much
easier for the user to compose error-free queries.

The criteria builder would be even more useful if it the field value
lists incorporated a kind of "incremental" aspect.  For example, say the
Offices table is a parent of SalesPersons, and say the user has already
created the criteria mentioned for the Orders report mentioned above:
Office = "London". Now if the user attempts to add another criteria, say
for the SalesPersons table, the SalesPersons field value list should
only show SalesPersons belonging to the "London" office.