Делаешь список, грузишь в него все продукты. В событии OnClick переносишь выделенный элемент во второй список. При нажатии кнопки идет перебор всех блюд, при этом смотришь состав - если есть хоть одно не соответствие, значит не получится это блюдо (критерии можешь немного изменить: например, указывать то, чего не хватает или что будет лишним). Все подходящие блюда выводишь в третий список.
Думаю, что нужна БД для хранения состава блюд.
P.S. Пролог с этим делом на УРА справится
