Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2014, 15:38   #1
Ivan174
Пользователь
 
Регистрация: 05.09.2012
Сообщений: 51
По умолчанию настройка печати из Delphi

Имеется программа, которая позволяет заполнять шаблон документа Word, используя данные из базы данных. По итогу пользователь может документ либо сохранить, либо сохранить и сразу отправить на печать. Никогда не редактировал до этого Word из делфи и не печатал. Добавляю объект PrintDialog. А вот далее сложность. Я так понимаю, для печати документа используется PrintOut. А как в ней задать выбранный в PrintDialog принтер?
Ivan174 вне форума Ответить с цитированием
Старый 07.08.2014, 15:42   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А может стоит просто открыть Ворд и выкинуть пользователю сообщение "Печатай, товарищ"?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.08.2014, 16:08   #3
Ivan174
Пользователь
 
Регистрация: 05.09.2012
Сообщений: 51
По умолчанию

Кстати, хорошая идея в рамках данной программы. Спасибо. Пожалуй так и сделаю. Но все же хотелось бы на будущее узнать, как задать имя принтера при печати))
И еще один вопрос, когда сохраняю документ, если не открыт ни один другой Word документ - все хорошо. Если же открыт, то мой документ сохраняется, но вылетает ошибка, что normal.dotm занят и т.п. Из-за чего такое может быть?
Код:
  
W:=CreateOleObject('Word.Application');
  W.visible:=False;
  W.Documents.Open(ExtractFileDir(Application.ExeName)+'\dogovor.doc');

  W.selection.Find.Text:='$$$date$$$';                     //дата
  W.selection.Find.Replacement.Text:=FormatDateTime('dd mmmm yyyy',Form2.dtp1.Date);
  W.Selection.Find.Execute(Replace:= 2);
W.ActiveDocument.SaveAs(path_dogovor+'\'+Form2.edt16.Text+'.doc');
  W.Documents.Close;
  W.Quit;
  W:=UnAssigned;

Последний раз редактировалось Ivan174; 07.08.2014 в 16:20.
Ivan174 вне форума Ответить с цитированием
Старый 07.08.2014, 21:18   #4
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

В PrintDialog есть такое замечательное чудо как Execute. Там можно выбрать не только принтер, но и многое другое.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 08.08.2014, 11:06   #5
Ivan174
Пользователь
 
Регистрация: 05.09.2012
Сообщений: 51
По умолчанию

Я знаю про Execute. Пользователь может выбрать принтер и настроить параметры печати. Как потом мне эти настройки применить - я тоже в курсе. Не знаю лишь то, как отправить на выбранный пользователем принтер
Ivan174 вне форума Ответить с цитированием
Старый 08.08.2014, 12:07   #6
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Вам совсем не нужен PrintDialog. Печатайте из самого ВОРДа средствами VBA.
FaTaL вне форума Ответить с цитированием
Старый 08.08.2014, 12:10   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как потом мне эти настройки применить - я тоже в курсе. Не знаю лишь то, как отправить на выбранный пользователем принтер
Не мучался бы ты...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.08.2014, 14:26   #8
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Может тогда вообще используете объект типа TPrinter. Модуль Printers. Если верить Флёнову.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 08.08.2014, 14:33   #9
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Цитата:
И еще один вопрос, когда сохраняю документ, если не открыт ни один другой Word документ - все хорошо. Если же открыт, то мой документ сохраняется, но вылетает ошибка, что normal.dotm занят и т.п. Из-за чего такое может быть?
Попробуйте так
W.ActiveDocument.Close; вместо W.Documents.Close;
FaTaL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нет кнопки применить в окне настройка печати Paskal1 Win Api 13 11.02.2013 15:22
Программа для печати плакатов, работа с графикой и печатью (Delphi) Alex1212 Помощь студентам 1 04.08.2012 12:45
Настройка печати Максим_Леонидович Компоненты Delphi 3 26.09.2008 20:45
Настройка Delphi Xenofibrius Общие вопросы Delphi 2 21.04.2008 12:40
отмена печати на принтере в Delphi Юliana Общие вопросы Delphi 2 29.01.2008 19:51