У меня есть TList. Он содержит коллекцию однотипных объектов. Эти объекты являются потомками TPersistent и имеют около 50 различных опубликованных свойств.
В моем приложении пользователь может выполнить поиск этих объектов, и результаты поиска отображаются в TDrawGrid, причем отображаемые определенные столбцы основаны на свойствах, в которых выполняется поиск. Например, если пользователь выполняет поиск по запросу «счет-фактура», в таблице результатов отображается столбец «счет-фактура». Я хотел бы позволить пользователю сортировать эту сетку. Проблема, конечно, заключается в том, что я не знаю заранее, какие столбцы находятся в сетке.
Обычно для сортировки TList я просто создаю функцию, например SortOnName (p1, p2)
и вызовите метод TList sort ()
. Я' Я бы хотел пойти еще дальше и найти способ передать имя свойства методу сортировки и использовать RTTI для сравнения.
Я мог бы, конечно, создать 50 различных методов сортировки и просто использовать их. Или установите переменную глобально или как часть класса, выполняющего всю эту работу, чтобы указать методу сортировки, по чему выполнять сортировку. Но мне было любопытно, есть ли у кого-нибудь из профессионалов Delphi другие идеи о том, как это реализовать.