Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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.008 c
1-54716
meskalin1974
2003-04-05 12:06
2003.04.17
Подсветка синтаксиса


1-54605
Max1111
2003-04-04 12:57
2003.04.17
Проблема с глобальным динамическим массивом4


14-54809
Supreme 2
2003-03-30 22:11
2003.04.17
QNX и прочие подобные ОС


4-54942
NewEdik
2003-02-17 21:53
2003.04.17
Отступ в ComboBox


9-54387
JB
2002-11-15 09:14
2003.04.17
Спрайты для игр





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский