Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.04.15;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.065 c
2-1173705002
Евгений Тарабановский
2007-03-12 16:10
2007.04.15
Как зарегистрировать новый тип файлов в Vista?


2-1174101785
APiC
2007-03-17 06:23
2007.04.15
_WIN32_WINNT


15-1174254497
Tempp
2007-03-19 00:48
2007.04.15
Программирование и экология


15-1174645519
Vlad Oshin
2007-03-23 13:25
2007.04.15
Delphi7()Demos()Football - кто-нибудь понял чего там делать надо?


15-1174361009
Slider007
2007-03-20 06:23
2007.04.15
С днем рождения ! 16 марта





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский