![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с принтером
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
как сделать так чтобы он печатал сразу..??