TPrintDialog, TPrinter - как печатать на принтер выбранный в диалоге?
я использовал и TPrinterSetupDialog и TPrintDialog, но печать всё время происходит на default'ный принтер.
как мне изменить принтер [COLOR=DimGray](но не ставить его по default'у для системы)[/COLOR] на тот, который выбрал пользователь в этих диалогах?
PS: ясно дело, что можно выбрать принтер по имени, но я имени выбранного принтера не знаю :(
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.
как мне изменить принтер [COLOR=DimGray](но не ставить его по default'у для системы)[/COLOR] на тот, который выбрал пользователь в этих диалогах?
По идее принтер меняет система (через TPrintDialog), странно...
Изменить принтер:
TPrinter* printer = Printer();
int printerIndex = printer->Printers->IndexOf(PrinterName);
printer->PrinterIndex = printerIndex;
но опять же надо знать имя принтера
По идее принтер меняет система (через TPrintDialog), странно...
да, но что-то я вот не заметил что так происходит.
вызываю диалог, создаю объект TPrinter, по индексу выбранного принтера находится default'ный.
но опять же надо знать имя принтера
ну да, это я и имел в виду. программа работает не у меня на компьютере и я не знаю какой принтер выбрал пользователь....
не знаю потому, что TPrintDialog мне это не говорит.
PS: nikipelovav, а ничего так у тебя получается справку копи-пастить :) спасибо конечно, но это я и сам в состоянии найти и прочитать.
вызываю диалог, создаю объект TPrinter, по индексу выбранного принтера находится default'ный.
Что вызывается первым Printer() или PrintDialog->Execute()?
PS: nikipelovav, а ничего так у тебя получается справку копи-пастить :) спасибо конечно, но это я и сам в состоянии найти и прочитать.
Уважаемый, Тень Пса
Читать справку ещё никому не мешало.
Попробуй этот код! Может тебе поможет ;)
TPrinter* prn = Printer();
ShowMessage( prn->Printers->Strings[prn->PrinterIndex].c_str() );
Специально, чтобы проверить, установил два принтера HP и Epson.
В диалоге PrintDialog выбираю принтер, и
как написано в справке! ... о чюдо, сообщение ShowMessage отображает
выбранное имя принтера! Просто оболдеть!
Неужели в справке правда написана
Удачи!
спасибо всем ) проблему решил.
в общем ситуация такая была и есть, прога работает с 2мя типами шаблонов: RTF и TIFF(JPEG, BMP, GIF - в общем картинки).
с RTF всё хорошо, принтер выбрал, на него идёт печать посредством либы, всё окей! (в этом месте всё работает, как и написано в справке, которую я всё-таки прочитал. я это имел в виду nikipelovav, чего ты разкричался о чуде и тд я не понял ;) лана не в обиду)
но с графическими шаблонами всё было ужасно, во-первых надо получить корректную картинку чтобы вывести её на принтер... ну а во-вторых, нужно выводить на ВЫБРАННЫЙ принтер :)
тут всё было довольно убого и не правильно, я пытался рисовать на канву принтера.
что ж. принтер оказывался не тем, что выбрал пользователь (как раз подобный кусок кода №1, nikipelovav, я и использовал), да и печать собссна не происходила.
проблему решил, запихерив печать шаблонов в саму библиотеку.
но почему так происходило, для меня лично оставалось загадкой. как бы вот.