Макросы это код, исполняющийся на этапе компиляции, результатом которого является другой код, который будет компилироваться. То, что ты описываешь, называется шаблон (generic). В Delphi они поддерживаются. Конечно с какой-то точки зрения шаблоны можно назвать макросами и макросами можно их эмулировать, если в языке нет поддержки шаблонов (например в С так иногда делают).