Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.11.23;
Скачать: CL | DM;

Вниз

модуль печати   Найти похожие ветки 

 
Fynjy   (2008-10-13 08:33) [0]

Здрасьте! У меня есть модуль печати (делали до меня), который выводит на печать чертежи из Image. При нажатии кнопки вылетает это факанное око - выбрать пнринтер, количество листотв и т.д.Кто подскажет как сделать принтер по умолчанию и причем виртуальный, чтобы это окно не выскакивало. Еще, при использовании виртуального принтера появляется окно выбора директории для сохранения самого PDF-а, вот оно мне тоже не нужно, доже должно быть по умолчанию. В идеале чтобы вся процедура печати протекала незаметно для пользователя.
Я так понимаю необходимо вручную править что-то в Printer-e?


 
Сергей М. ©   (2008-10-13 08:39) [1]


> необходимо вручную править что-то в Printer-e


Не трогай генофонд !)
Не ты его создавал - не тебе его и править)


> При нажатии кнопки вылетает это факанное око


Обработчик события ее нажатия святой дух писал ?


 
Fynjy   (2008-10-13 08:41) [2]

нет, но это окно из Printer вылетает, как же быть?


 
Сергей М. ©   (2008-10-13 08:43) [3]


> это окно из Printer вылетает


Это как это "из Printer вылетает" ?)


 
Fynjy   (2008-10-13 08:49) [4]

я так понял это окно - PrintDialog? Верно?


 
Сергей М. ©   (2008-10-13 08:52) [5]

Ну верно.
И что ?
Оно же "вылетает" в результате каких-то конкретных действий твоей программы.
Так вот что это за действия ?


 
Fynjy   (2008-10-13 09:00) [6]

Вот процедура, ничего тут нет.
procedure TPrintForm.btbPrintClick(Sender: TObject);
var
 BarCode: string;
begin
 if IsPrint and (not IsAdmin) then
   if ( not ( MessageDlg( "Âû óæå ðàñïå÷àòûâàëè ýòîò ÷åðòåæ! Ïðîäîëæèòü?", mtWarning,[mbOk,mbCancel], 0 ) = mrOk ) )
     then Exit;

 // Óñòàíàâëèâàåì ØÒÐÈÕ-ÊÎÄ
 XYBar.X := imgBar.Left;
 XYBar.Y := imgBar.Top;

 // Ïðîåâåðÿåì çàïîëíåíèå îáÿçàòåëüíûõ ïîëåé
 if (cbFor.Text = "Ââåäèòå ôàìèëèþ ïîëó÷àòåëÿ  äîêóìåíòà") or (cbFor.Text = "") then
 begin
   ShowMessage("Íåîõîäèìî çàïîëíèòü ïîëå "Äëÿ êîãî" ");
   cbFor.SelectAll;
   CbFor.SetFocus;
   exit;
 end;
 if (cbReason.Text = "Ââåäèòå ïðè÷èíó ïå÷àòè  äîêóìåíòà") or (cbReason.Text = "") then
 begin
   ShowMessage("Íåîáõîäèìî çàïîëíèòü ïîëå "Ïðè÷èíà ïå÷àòè"");
   cbReason.SelectAll;
   cbReason.SetFocus;
   exit;
 end;
 if (cbDiv.Text = "Ââåäèòå îòäåë-ïîëó÷àòåëü äîêóìåíòà") or (cbDiv.Text = "") then
 begin
   ShowMessage("Íåîáõîäèìî çàïîëíèòü ïîëå "Îòäåë"");
   cbDiv.SelectAll;
   cbDiv.SetFocus;
   exit;
 end;

 // Ãåíåðèì øòðèõ-êîä è çàïèñûâàåì åãî â áàçó
 if not InputBarBase(BarCode) then
   begin
     MessageDlg("Îøèáêà ãåíåðàöèè øòðèõ-êîäà. Ïîïðîáóéòå åùå ðàç", mtWarning,[mbOk],0);
     exit; // åñëè îøèáêà çàïèñè â ÁÄ, òî íå ïå÷àòàåì
   end;

 // Ïå÷àòàåì äîêóìåíò
 with Printer do begin
   BeginDoc;
   with Canvas do begin
     StretchDraw(Rect, Img.Picture.Graphic);
     Font.Name := "EanBwrP36Tt";
     Font.Size := 30;
     TextOut( Round(XYBar.X * ScalePr), Round(XYBar.Y * ScalePr), BarCode);
   end;
   EndDoc;
 end;
 ModalResult := mrOk;
end;


 
Сергей М. ©   (2008-10-13 09:05) [7]


> ничего тут нет


Действительно, "ничего тут нет".
Сразу BeginDoc - и понеслась нелегкая по кочкам)
А на каком принтере с какими параметрами начинать документ - то одному Пушкину известно.

Чему ж тогда удивляться ?

Ты вообще хэлп штудировал на тему слова "Printer", прежде чем лепить код ?


 
Fynjy   (2008-10-13 09:14) [8]

я англицкий не очень. Но выбор принтера ведь в Printer-e происходит.


 
Сергей М. ©   (2008-10-13 09:30) [9]


> я англицкий не очень


И что ?
А Гугль для чего существует ? Или там тоже сплошь и рядом буквы незнакомые ?


> выбор принтера ведь в Printer-e происходит


Да.
Установкой, например, публичного св-ва PrinterIndex.


 
Smile   (2008-10-13 09:33) [10]

А как быть с "тайной" личной переписки?
:)


 
Сергей М. ©   (2008-10-13 09:36) [11]


> Fynjy   (13.10.08 09:14) [8]


Вот простой код:

procedure TForm1.Button3Click(Sender: TObject);
begin
 printer.BeginDoc;
 printer.EndDoc;
end;


Жму кнопку, из моего дифолтного принтера тут же вылазит чистый лист бумаги.
При этом никаких принт-диалогов я не вижу.
Что я делаю неправильно ?


 
Fynjy   (2008-10-13 10:21) [12]

когда ты жмешь кнопку, он автоматически выбирает твой дефолтный принтер и автоматически пишет OutPut директорию, в данном случае имя порта твоего принтера, а вот где это прописать вручную, вот вчем вопрос


 
Fynjy   (2008-10-13 10:31) [13]

что никто не знает?


 
{RASkov} ©   (2008-10-13 10:32) [14]

А может у автора нет принтера по умолчанию вот ось и интересуется кудаж будем печатать...) Если это вообще так возможно конечно....
:)


 
{RASkov} ©   (2008-10-13 10:34) [15]

> [13] Fynjy   (13.10.08 10:31)

Ты пробывал код из [11]? Что у тебя?

И еще вопрос к тебе:
Что за:

> У меня есть модуль печати (делали до меня), который выводит
> на печать чертежи из Image

?


 
Сергей М. ©   (2008-10-13 10:37) [16]


> автоматически выбирает твой дефолтный принтер


Угу.

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

Спрашивается, с какого перепугу у тебя "окно из Printer вылетает", если дифолтный принтер (каким бы он ни был) определен ?


> где это прописать вручную


Св-во Printer.PrinterIndex указывает индекс принтера в списке Printers, на который будет осуществляться фактический вывод документа.

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


 
Anatoly Podgoretsky ©   (2008-10-13 14:14) [17]

> Fynjy  (13.10.2008 10:21:12)  [12]

Ничего писать не надо, если у тебя есть хотя бы один принтер, а если нет, то ничего не поможет.


 
Fynjy   (2008-10-13 15:20) [18]

НУ, а как установить принтер по умолчанию(нужный мне), где это прописывается? как получить описание принтера и все эти дела?


 
Правильный$Вася   (2008-10-13 15:28) [19]


>  как установить принтер по умолчанию(нужный мне)

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


 
Сергей М. ©   (2008-10-13 15:30) [20]

http://www.google.ru/search?complete=1&hl=ru&newwindow=1&client=firefox-a&rls=org.mozilla%3Aru%3Aofficial&hs=vQg&q=Delphi+setprinter+DEVMODE&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=lang_ru&aq=f&oq=


 
Anatoly Podgoretsky ©   (2008-10-13 16:16) [21]

> Fynjy  (13.10.2008 15:20:18)  [18]

Скрипач не нужен!



Страницы: 1 вся ветка

Текущий архив: 2008.11.23;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.034 c
3-1210245809
Tans
2008-05-08 15:23
2008.11.23
Помогите, плиз.


1-1202506594
Ukrainec
2008-02-09 00:36
2008.11.23
Как изменить цвет item a в TCheckListBox?


2-1224142845
Нов_и_чок
2008-10-16 11:40
2008.11.23
Из DBF в MDB


15-1222450529
No_Dead(work)
2008-09-26 21:35
2008.11.23
зачем нужен *.ion?


15-1222404395
Городской Шаман
2008-09-26 08:46
2008.11.23
Очень интересные выводы :)