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

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

Работа с принтером


Страницы:   1 2

sergeyxxx ©   (2007-03-26 07:30:00) 

if (PrintDialog1.Execute) then begin
   PrinterSetupDialog1.Execute;
   Printer.Canvas.Draw(800,600,Image1.Picture.Graphic);

Народ подскажите пожалуйста что я нетак делаю.. нехочет распечатоваться..


sergeyxxx   (2007-03-27 00:12:00) [1]

Ладно попробуем. :) Всем спосибо за помощь я спать...


RASkov   (2007-03-26 23:48:00) [2]

> [34] sergeyxxx ©   (26.03.07 23:35)

В таком случае положи Image и на нем рисуй, что тебе надо
Вот, если это выполняется в методе формы, то так попробуй

 Image.Canvas.Brush.Color:=Color;
 Image.Canvas.FillRect(Image.Canvas.ClipRect);
 Image.Canvas.TextOut(0, 0, 'TEST');
............
 Printer.Canvas.StretchDraw(r, form1.GetFormImage);


form1. - не пиши.


RASkov   (2007-03-26 23:37:00) [3]

> [29] sergeyxxx ©   (26.03.07 23:13)
> [30] sergeyxxx ©   (26.03.07 23:14)

Image.Picture.Bitmap.Assign(GetFormImage);
Но тебе это не поможет!


sergeyxxx   (2007-03-26 23:35:00) [4]

Не там очень много..


RASkov   (2007-03-26 23:29:00) [5]

> [32] sergeyxxx ©   (26.03.07 23:19)

А что ты выводишь на форму TextOut'ом? Может Label использовать в данном случае...


sergeyxxx   (2007-03-26 23:19:00) [6]

У меня неполучается вывести на принтер Form1.Canvas
а Image.Picture всё идеально идёт


Loginov Dmitry   (2007-03-26 23:17:00) [7]

Для чего записывать GetFormImage в Image.Picture?


sergeyxxx   (2007-03-26 23:14:00) [8]

можешь написать процедуру?


sergeyxxx   (2007-03-26 23:13:00) [9]

Да это я знаю но как записать GetFormImage в Image.Picture?


RASkov   (2007-03-26 22:49:00) [10]

> На форме Form1.Canvas.TextOut =)

Если это не на OnPaint формы, то GetFormImage это и не отрисует.


sergeyxxx   (2007-03-26 22:12:00) [11]

При нажатии кнопки


sergeyxxx   (2007-03-26 22:11:00) [12]

На форме Form1.Canvas.TextOut =)


Loginov Dmitry   (2007-03-26 21:56:00) [13]

Еще наводящий вопрос: в какой момент (при возникновении какого события) происходит попытка печати?


Loginov Dmitry   (2007-03-26 21:51:00) [14]

Вообще-то код рабочий. Должен печатать изображение формы со всеми лежащими на ней контролами.
А на форме какие контролы лежат? (Может на ней ничего нет, и цвет - белый :))


sergeyxxx   (2007-03-26 21:13:00) [15]

r:TRect;
begin
if (PrintDialog1.Execute) then begin
  Printer.Orientation := poLandscape;
  Printer.BeginDoc;
  Printer.Canvas.Refresh;
  r := Rect(0, 0, Printer.Pagewidth, Printer.PageHeight);
  {Printer.Canvas.StretchDraw(r,Image1.Picture.Graphic);} // печатает всё
  Printer.Canvas.StretchDraw(r,form1.GetFormImage); // печатает но белый лист (Почему так ктонить подскажет?)
  Printer.EndDoc;


Loginov Dmitry   (2007-03-26 18:30:00) [16]

Вот кое-что из древних исходником. Но понять можно :)


 if PrintDialog1.Execute then begin
   // Выполняем печать
   Printer.Orientation := poLandscape;
   Printer.BeginDoc;
   Printer.Canvas.Refresh;
   PointsX:=GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSX) / 101.538;
   PointsY:=GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY) / 101.538;

   X1:=round((Printer.PageWidth - Min(Image.Picture.Bitmap.Width, 1024) * PointsX) / 2) + 80;
   Y1:=round((Printer.PageHeight - Min(Image.Picture.Bitmap.Height, 768) * PointsY) / 2);
   X2:=round(X1 + Min(Image.Picture.Bitmap.Width, 1024)*PointsX);
   Y2:=round(Y1 + Min(Image.Picture.Bitmap.Height, 768)*PointsY);

   Printer.Canvas.CopyRect(Rect(X1, Y1, X2, Y2),Image.Picture.Bitmap.Canvas,
     Rect(0,0,Min(Image.Picture.Bitmap.Width, 1024), Min(Image.Picture.Bitmap.Height, 768)));
   Printer.EndDoc;    
 end;


sergeyxxx   (2007-03-26 18:21:00) [17]

Во спс, получилось но в 10 раз меньше получился.. как сделать 1:1 маштаб?


Loginov Dmitry   (2007-03-26 18:10:00) [18]

И сделай его по умолчанию:

Пуск/Принтеры и факсы/Использовать по умолчанию


Loginov Dmitry   (2007-03-26 18:09:00) [19]

:)

if PrintDialog1.Execute then
......

принтер-то выбери реальный.


sergeyxxx   (2007-03-26 18:07:00) [20]

> begin
> with Printer do
> begin
>   BeginDoc;
>  Printer.Canvas.Draw(800,600,Image1.Picture.Graphic);
>   EndDoc;
> end;

У меня при этом коде он предлагает сохранить файл в формате .mdi
как сделать так чтобы он печатал сразу..??


Страницы:   1 2

Наверх

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