Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

TPrintDialog, TPrinter - как печатать на принтер выбранный в диалоге?

92
07 ноября 2007 года
Тень Пса
2.2K / / 19.10.2006
собственно сабж.
я использовал и TPrinterSetupDialog и TPrintDialog, но печать всё время происходит на default'ный принтер.

как мне изменить принтер [COLOR=DimGray](но не ставить его по default'у для системы)[/COLOR] на тот, который выбрал пользователь в этих диалогах?

PS: ясно дело, что можно выбрать принтер по имени, но я имени выбранного принтера не знаю :(
3.2K
07 ноября 2007 года
nikipelovav
152 / / 12.04.2006
TPrinter :


Lists all printers installed in Windows.

__property Classes::TStrings* Printers = {read=GetPrinters};

Description

The list of installed printers is found in the Printers property. The value of the PrinterIndex property is the currently selected printer. The list of fonts supported by the current printer is found in the Fonts property.
246
07 ноября 2007 года
GIZMO
1.8K / / 30.07.2004
Цитата: Тень Пса
собственно сабж.
как мне изменить принтер [COLOR=DimGray](но не ставить его по default'у для системы)[/COLOR] на тот, который выбрал пользователь в этих диалогах?


По идее принтер меняет система (через TPrintDialog), странно...

Изменить принтер:
TPrinter* printer = Printer();
int printerIndex = printer->Printers->IndexOf(PrinterName);
printer->PrinterIndex = printerIndex;
но опять же надо знать имя принтера

92
07 ноября 2007 года
Тень Пса
2.2K / / 19.10.2006
Цитата:

По идее принтер меняет система (через TPrintDialog), странно...

да, но что-то я вот не заметил что так происходит.
вызываю диалог, создаю объект TPrinter, по индексу выбранного принтера находится default'ный.

Цитата:

но опять же надо знать имя принтера

ну да, это я и имел в виду. программа работает не у меня на компьютере и я не знаю какой принтер выбрал пользователь....
не знаю потому, что TPrintDialog мне это не говорит.

PS: nikipelovav, а ничего так у тебя получается справку копи-пастить :) спасибо конечно, но это я и сам в состоянии найти и прочитать.

246
07 ноября 2007 года
GIZMO
1.8K / / 30.07.2004
Цитата: Тень Пса
да, но что-то я вот не заметил что так происходит.
вызываю диалог, создаю объект TPrinter, по индексу выбранного принтера находится default'ный.


Что вызывается первым Printer() или PrintDialog->Execute()?

3.2K
07 ноября 2007 года
nikipelovav
152 / / 12.04.2006
Цитата: Тень Пса

PS: nikipelovav, а ничего так у тебя получается справку копи-пастить :) спасибо конечно, но это я и сам в состоянии найти и прочитать.



Уважаемый, Тень Пса

Читать справку ещё никому не мешало.

Попробуй этот код! Может тебе поможет ;)

 
Код:
PrintDialog1->Execute();
  TPrinter* prn = Printer();
  ShowMessage( prn->Printers->Strings[prn->PrinterIndex].c_str() );


Специально, чтобы проверить, установил два принтера HP и Epson.
В диалоге PrintDialog выбираю принтер, и
как написано в справке! ... о чюдо, сообщение ShowMessage отображает
выбранное имя принтера! Просто оболдеть!

Неужели в справке правда написана
 
Код:
The value of the PrinterIndex property is the currently selected printer


Удачи!
92
08 ноября 2007 года
Тень Пса
2.2K / / 19.10.2006
Цитата: GIZMO
Что вызывается первым Printer() или PrintDialog->Execute()?


спасибо всем ) проблему решил.

в общем ситуация такая была и есть, прога работает с 2мя типами шаблонов: RTF и TIFF(JPEG, BMP, GIF - в общем картинки).

с RTF всё хорошо, принтер выбрал, на него идёт печать посредством либы, всё окей! (в этом месте всё работает, как и написано в справке, которую я всё-таки прочитал. я это имел в виду nikipelovav, чего ты разкричался о чуде и тд я не понял ;) лана не в обиду)

но с графическими шаблонами всё было ужасно, во-первых надо получить корректную картинку чтобы вывести её на принтер... ну а во-вторых, нужно выводить на ВЫБРАННЫЙ принтер :)
тут всё было довольно убого и не правильно, я пытался рисовать на канву принтера.

что ж. принтер оказывался не тем, что выбрал пользователь (как раз подобный кусок кода №1, nikipelovav, я и использовал), да и печать собссна не происходила.

проблему решил, запихерив печать шаблонов в саму библиотеку.

но почему так происходило, для меня лично оставалось загадкой. как бы вот.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог