Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с принтером [D7, ME, 2000, XP, 2003]


распечатчик ©   (2007-01-24 12:29:00) 

Задача состоит в следующем. Необходимо организовать печать графики с подготовленной канвы.  воспользовался примером этого сайта:

procedure PrintGetPrinterDeviseProp;
begin
 PixelsX:=GetDeviceCaps(printer.Handle,LogPixelsX);
 PixelsY:=GetDeviceCaps(printer.Handle,LogPixelsY);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
PrintDlg: TPrintDialog;
begin
//принять
PrintDlg:=TPrintDialog.Create(Owner);
if PrintDlg.Execute then
begin
 With Printer do
 Begin
   BeginDoc; { Начало печати }
     PrintGetPrinterDeviseProp;
     Canvas.Font:=label1.font; { Задали шрифт }
     Canvas.TextOut(100,100,'Это тест принтера !!!'); { Печатаем текст }
   EndDoc; { Конец печати }
 end;
end;
PrintDlg.Free;
end;


Вылетает. AV на строке begindoc.
Хотелось бы услышать подсказки по конкреному коду и/или вобще по задаче.
Спасибо


TRUNK   (2007-01-26 10:31:00) [1]


> как программно вручную ему задать печать с качеством фотопечати

Возможен такой вариант:
1) заполняем структуру DEVMODE
2) вызываем CreateDC

P.S. А может что-то не так с драйверами печати?


распечатчик   (2007-01-26 10:19:00) [2]

Так ведь я говорю. Я поставил свой компобокс, забил его принтерами и при выборе принтера присваваю -
Printer.PrinterIndex := comboBox.itemIndex;
А через Форму диалога с принтером с вкладки диалоги нельзя ни принтер выбрать ни свойства принтера. Ничего не принимается. Поетому я и спрашиваю как программно вручную ему задать печать с качеством фотопечати. Или я где то неправильно изначально делаю что-то с диалогом.


TRUNK   (2007-01-26 10:01:00) [3]


> а как мне вручную задать принтеру, чтоб он печатал с качеством
> фотопечати?

Для этого есть кнопка "Свойства" справа от ComboBox'а в котором выбирается принтер. Или и это не помогает?


распечатчик   (2007-01-26 09:47:00) [4]

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


распечатчик   (2007-01-26 09:31:00) [5]

Нет. Я уже проверил. Я вручную присваиваю ему номер нужного принтера. Тогда принтер меняется, а как мне вручную задать принтеру, чтоб он печатал с качеством фотопечати? Потому что через стандартное окно диалога ничего не меняется почему-то.


TRUNK   (2007-01-25 17:34:00) [6]

Проверь, меняется ли Printer.PrinterIndex после закрытия TPrintDialog.


распечатчик   (2007-01-25 11:33:00) [7]

Ну помогите, ведь наверняка же кто-то сталкивался с этим.


распечатчик   (2007-01-25 09:18:00) [8]

К счастью орфография не влияет на выполнение кода. С этим разобрался. Помогите разобраться с настройками принтера. Не могу понять как задаются настройки печати и даже просто выбора принтера. Если выбирать принтер в окне диалога принтера, то печать идет через принтер который стоит по умолчанию (т.е. ему все равно выбрал я другой принтер или нет - результат один и тот же) и как бы я не настраивал печать все настройки почему-то не принимаются (ему по-прежнему все равно).


TRUNK   (2007-01-24 13:40:00) [9]


> PrintGetPrinterDevi seProp;

Чего-то я о такой функции не слышал...


Наверх

Титульная страница Поиск, карта сайта Написать письмо