Главная страница
    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.045 c
15-1174410706
@!!ex
2007-03-20 20:11
2007.04.15
Интернет заработок.


2-1174946193
Fluxay
2007-03-27 01:56
2007.04.15
как вычленить названия методов и классов


2-1174586807
Kostya_
2007-03-22 21:06
2007.04.15
1c + Delphi


1-1171611244
DelphiLexx
2007-02-16 10:34
2007.04.15
Изменить заголовок окна при запуске bat-файлы


2-1174645916
Romas81
2007-03-23 13:31
2007.04.15
Обход через tab элементов на разных панелях





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский