Zumindest die Druckerauswahl könntest Du doch über einen Print-Dialog bzw. Printersetup-Dialog realisieren. Was das Drucken an sich angeht: Einfache Dinge könntest Du über das Printer-Objekt ausdrucken (Printer.Canvas.Textout(10,10,'Hallo Welt')). Für eine Druckvorschau gibt es reichlich freie sowie kommerzielle Komponenten, z.B.
diese.