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

Вниз

Работа с принтером   Найти похожие ветки 

 
sergeyxxx ©   (2007-03-26 07:30) [0]

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

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


 
Loginov Dmitry ©   (2007-03-26 07:54) [1]

А хэлп читать не пробовал? Там неплохие примеры можно узреть, сразу все понятно станет.


 
sergeyxxx ©   (2007-03-26 16:53) [2]

Пробывал толку мало.. поэтому и обратился сюда кто уже с этим сталкивался и на опыте!


 
Нуб   (2007-03-26 17:00) [3]

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


еще дописать внизу надА

for i :=1 to all_pages do begin
  print.allpages.do;
  if pages not print then print.them.again
 else shut.down.computer := true;
end;


 
sergeyxxx ©   (2007-03-26 17:24) [4]

мда.. думаешь я не вижу что это прикол?


 
Нуб   (2007-03-26 17:29) [5]


> sergeyxxx ©  

зайди на http://ya.ru/ - там инфы столько, что можно написать программулину не только чтобы твой принтер заработал, но и все принтеры в соседнем здании начали петь песни


 
sergeyxxx ©   (2007-03-26 17:33) [6]

если ты незнаешь, понт писать бред???


 
Loginov Dmitry ©   (2007-03-26 17:33) [7]

> Пробывал толку мало


Как пробовал?


 
sergeyxxx ©   (2007-03-26 17:39) [8]

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


 
Нуб   (2007-03-26 17:41) [9]

Удалено модератором


 
Нуб   (2007-03-26 17:43) [10]

Удалено модератором


 
sergeyxxx ©   (2007-03-26 17:43) [11]

С Richedit  без проблем а вот с Image.Picture невыходит...

begin
if (PrinterSetupDialog1.Execute) then begin
Form3.RichEdit1.Print("имя");
end;


 
sergeyxxx ©   (2007-03-26 17:44) [12]

Удалено модератором


 
Нуб   (2007-03-26 17:48) [13]

а я не знаю как будет правильно , по-этому на тебе пример если захочешь разберешся http://files.adamant.ua/4755


 
sergeyxxx ©   (2007-03-26 17:49) [14]

Удалено модератором


 
Loginov Dmitry ©   (2007-03-26 17:50) [15]

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


У меня это работает.


 
sergeyxxx ©   (2007-03-26 17:52) [16]

а у меня нехочет пахать..


 
Loginov Dmitry ©   (2007-03-26 18:05) [17]

> а у меня нехочет пахать..


Так и говорит "Не хочу пахать", или что?


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

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

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


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

:)

if PrintDialog1.Execute then
......

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


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

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

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


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

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


 
Loginov Dmitry ©   (2007-03-26 18:30) [22]

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


 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 21:13) [23]

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 21:51) [24]

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


 
Loginov Dmitry ©   (2007-03-26 21:56) [25]

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


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

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


 
sergeyxxx ©   (2007-03-26 22:12) [27]

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


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

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

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


 
sergeyxxx ©   (2007-03-26 23:13) [29]

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


 
sergeyxxx ©   (2007-03-26 23:14) [30]

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


 
Loginov Dmitry ©   (2007-03-26 23:17) [31]

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


 
sergeyxxx ©   (2007-03-26 23:19) [32]

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


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

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

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


 
sergeyxxx ©   (2007-03-26 23:35) [34]

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


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

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

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


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

> [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. - не пиши.


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

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



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

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

Наверх




Память: 0.55 MB
Время: 0.049 c
6-1161764071
yuriks
2006-10-25 12:14
2007.04.15
idFTP и большие файлы


15-1174657348
Knight
2007-03-23 16:42
2007.04.15
ПЯТНИЦА!!!


15-1174559873
Megabyte
2007-03-22 13:37
2007.04.15
Приматы-программисты :)


2-1174781634
sergeyxxx
2007-03-25 04:13
2007.04.15
Хелп с принтером


2-1175078148
Леонид
2007-03-28 14:35
2007.04.15
Математическое выражение