Форум: "Система";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];
ВнизTPrintDialog Найти похожие ветки
← →
Tolian (2003-02-12 15:00) [0]Почему, при смене имени принтера в PrintDialog или PrinterSetupDialog, программа все равно печатает на том принтере, который установлен в системе по умолчанию?
← →
nejest (2003-02-12 17:52) [1]Скорее всего после запуска PrintDialog или PrinterSetupDialog ты не получаешь настройки принтера и имя и не используешь их при печати.
← →
Tolian (2003-02-12 21:16) [2]Спасибо, но как имя и настройки получить от PrintDialog(PrinterSetupDialog) после вызова метода PrintDialog1.Execute?
← →
Anatoly Podgoretsky (2003-02-12 21:34) [3]Ты свойства посмотрел в справке?
Там все очень просто, имена говорят за себя и есть описание.
← →
Tolian (2003-02-13 19:16) [4]Посмотрел, но так и не понял, что надо написать после PrintDialog.Execute, чтобы отчет печатался на том принтере, который выбрал пользователь в PrintDialog-е (Принтер/Имя)?
← →
Anatoly Podgoretsky (2003-02-13 20:16) [5]А на этот вопрос не возможно тебе ответить, поскольку ты не указываешь как и чем печатаешь. В обычном случае ничего.
← →
Tolian (2003-02-13 22:01) [6]Ситуация такая: у меня в системе установлено три принтера (1-струйка(по умолчанию), 2-термоплоттер и 3-матричный) и все на LPT1. Если мне из моего приложения надо напечатать цветные графики, я вставляю шнур из LPT1 в 1-струйку и все отлично печатается, а если не надо цветные, то вытаскиваю шнур из струйки и вставляю его в термоплотер, в PrintDialogе выбираю соответствующее имя принтера, нажимаю ОК, и ничего не печатается либо печатается абракадабра. Чтобы печаталось все правильно, недостаточно установить в системе термоплоттер исполбзуемый по умолчанию, надо закрыть мое приложение, поставить плоттер как используемый по умолчанию и снова запустить мое приложение. А это, как вы понимаете, очень плохо.
А печатаю я
Printer.BeginDoc
...
Printer.EndDoc
← →
Tolian (2003-02-14 17:46) [7]Так, как победить-то эту ситуацию, уважаемый Anatoly Podgoretsky?
← →
Anatoly Podgoretsky (2003-02-14 18:15) [8]А не знаю, у меня все работает, твою ситуации мне не воспроизвести, попробуй сменить индекс принтера
← →
Tolian (2003-02-16 02:09) [9]Ладно, тогда такой вопрос: какой обработчик события OnClick кнопки на моей форме написать, чтобы происходило все тоже самое, что и при нажатии на кнопке "Свойства" в PrintDialog-е?
← →
Tano (2003-02-16 14:00) [10]выбрать принтер:
Printer.PrinterIndex:=новый индекс;
а получить строковые названия можно из массива (i=от 0 до Printer.Printers.Count)
Printer.Printers.Strings[i] - тут пользователь может выбрать в ComboBoxe(например) или ты распознаешь название принтера по контексту и установишь соотв. ему индекс
← →
Tano (2003-02-16 14:03) [11]уточненьице: Printer.Printers.Count - число принтеров, следовательно лучше
i:=0; while i<Printer.Printers.Count do ...
(это избавит от вылета при отсутствии принтеров)
← →
Tolian (2003-02-17 14:50) [12]Спасибо Tano. Теперь еще надо сделать кнопку, при нажатии на которую будет появляться окно свойств выбранного в ComboBoxe принтера. Что надо написать в OnClick этой кнопки, чтобы это окно со свойствами принтера появилось?
← →
Tolian (2003-02-17 23:21) [13]Обнаружилась еще одна беда: если попытаться обойтись без PrintDialoga,то на операторе NewPage или EndDoc возникает ошибка. Если вызвать PrintDialog.Execute, то все работает.
← →
Tolian (2003-02-17 23:21) [14]Обнаружилась еще одна беда: если попытаться обойтись без PrintDialoga,то на операторе NewPage или EndDoc возникает ошибка. Если вызвать PrintDialog.Execute, то все работает. Как такое победить?
← →
Tolian (2003-02-18 23:21) [15]Так можно обойтись без PrintDialoga или надо обязательно его использовать?
← →
Tolian (2003-02-20 00:52) [16]А?
← →
kolesya (2003-02-20 14:31) [17]>выбрать принтер:
>Printer.PrinterIndex:=новый индекс;
Согласен с Tano, но нужно учесть что при установке (деустановке) принтера - индексы у принтеров МЕНЯЮТСЯ.
Пример работающего кода (принтер в текстовом режиме):
{==============================================}
var
InText,OutText:TextFile;
...
Printer.PrinterIndex:=PrintDialog.Index;//индекс твоего принтера
{$i-}
AssignFile(InText,"Out.tmp");
AssignPrn(OutText);
Reset(InText);
If IOResult=0 then
begin
Rewrite(OutText);
While Not Eof(InText) do
begin
ReadLn(InText,Tmp);
WriteLn(OutText,Tmp);
end;
CloseFile(OutText);
end;
CloseFile(InText);
{==========================================}
← →
Tano (2003-02-20 20:46) [18]Не могу подсказать. Я и настраивал вручную и вызывал диалог печати - и так и так работает (например кнопка на форме "Напечатать два бланка" - кидает на принтер по умолчанию пару копий, а в меню - печать с запросом). Детальнее не разбирался Sorry.
← →
Tolian (2003-02-21 04:38) [19]Сначала вопрос к kolesya:
Printer.PrinterIndex:=PrintDialog.Index;//индекс твоего принтера,
здесь PrintDialog - это что, и если это TPrintDialog, то откуда у него свойство Index?
Я хочу обойтись без TPrintDialoga, у меня есть мое окно, TFormPrint например, в котором я с помощью ComboBoxa выбираю имя принтера: Printer.PrinterIndex := ComboBox.ItemIndex, нажимаю кнопку OK и начинаю печатать, но в строке Printer.NewPage(или Printer.EndDoc) возникает ошибка Access violetion at ..., после чего Windows пишет, что ваша программа выполнила недопустимую операцию и будет закрыта. Что я неправильно делаю?
← →
Tolian (2003-02-24 13:41) [20]Так что же?
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.025 c