Показать сообщение отдельно
  #6  
Старый 21.08.2008, 09:22
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Если вы хотите это сделать из Delphi (судя по фразе "...отправить на печать через цикл"), то следует осознавать проблему, которая состоит не в том, как сделать, чтобы не вызывался диалог для печати, а в том, что Windows не занимается разборкой типов файлов и напрямую ей нельзя сказать: "печатай такой то файл".
Подозреваю, что вы заметили, что печатью каждого типа файла занимается свое приложение (даже для печати текста без приложения, умеющего это делать вам не обойтись), которое делает перед печатью так называемый рендеринг родственных ему типов данных (в том числе и находящихся в файлах) и только потом отправляет эти данные Windows для печати.
Таким образом, чтобы печатать разные типы файлов вы должны в своем приложении на Delphi сделать рендеринг данных из файлов, причем каждый тип файла должен ренедерится по своему.
Сам по себе ренедеринг не более чем красивое слово и, если взять, например, xml или html файлы, то для печати достаточно отправить на Printer.Canvas (TPrinter) строки из этих файлов.
Если же это xls файл, то исходя из вышесказанного вам без Excel'я не обойтись: придется из приложения вызывать Excel или брать какой-нибудь wiewer сторонних разработчиков для этого типа файла.
Аналогично и для других закрытых форматов (для doc придется вызвать MS Word).
И сложность будет не в том чтоб подавить появление диалога принтера (как раз это и не будет вызывает трудностей), а в том что вам придется
в своем приложении заниматься выводом на принтер каждого типа файла самостоятельно и по разному.
__________________
Не забывайте делать резервные копии
Ответить с цитированием