Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.05.2012, 22:50
Huligan76 Huligan76 вне форума
Прохожий
 
Регистрация: 27.05.2012
Сообщения: 3
Репутация: 10
По умолчанию Печать Panel

Всем привет) такая проблема: я на панеле разместил едиты и лэйблы, мне нужно пустить на печать панель и все её содержимоё. Возился с принтдиалог, не смог распечатать.
Может кто код подскажет?)) Там мне кажется 2 строчки надо))
Ответить с цитированием
  #2  
Старый 27.05.2012, 22:58
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Класс TPrinter.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 27.05.2012, 23:00
Huligan76 Huligan76 вне форума
Прохожий
 
Регистрация: 27.05.2012
Сообщения: 3
Репутация: 10
По умолчанию

Что класс TPrinter?))
Ответить с цитированием
  #4  
Старый 27.05.2012, 23:52
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Huligan76
Что класс TPrinter?))

Код:
Panel1.PaintTo(Printer.Canvas)
Проверь, может надо Panel1.Canvas.PaintTo(). Ну и параметры могут быть дополнительные. Ну и обкладку, типа Printer.BeginDoc и Printer.EndDoc, надо.
Ответить с цитированием
  #5  
Старый 28.05.2012, 18:26
Huligan76 Huligan76 вне форума
Прохожий
 
Регистрация: 27.05.2012
Сообщения: 3
Репутация: 10
По умолчанию

Канваса не в одном свойстве нету, его тоже на форму кидать надо? Просто мало в этой теме шарю, а прогу сделать надо((
Ответить с цитированием
  #6  
Старый 30.05.2012, 17:02
Аватар для DelphiM0ZG
DelphiM0ZG DelphiM0ZG вне форума
Новичок
 
Регистрация: 22.10.2011
Сообщения: 62
Репутация: 666
Сообщение

Попробуйте этот код (у себя не испытывал - пока не имею возможности):

Код:
procedure TForm1.ButtonClick(Sender: TObject);
Var
  x1, y1, x2, y2: Integer;
  PointsX, PointsY: Double;
  Bitmap: TBitmap;

begin
  If Not(PrintDialog.Execute) Then Exit;

  BitMap:=TBitmap.Create;
  Bitmap.Width:=Panel.Width;
  Bitmap.Height:=Panel.Height;  
  Panel.PaintTo(Bitmap.Canvas, 0, 0);

  Printer.BeginDoc;

  Printer.Canvas.Refresh;
  // Получаю данные о разрешении принтера
(* число 70 - коэффициент масштабирования (для разных принтеров может быть разный) *)
  PointsX:=GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSX)/70;
  PointsY:=GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSY)/70;
  // Рассчитываю размеры изображения
  x1:=Round((Printer.PageWidth - Bitmap.Width*PointsX)/2);
  y1:=Round((Printer.PageHeight - Bitmap.Height*PointsY)/2);
  x2:=Round(x1 + Bitmap.Width*PointsX);
  y2:=Round(y1 + Bitmap.Height*PointsY);
  // Вывожу изображение на печать
  Printer.Canvas.CopyRect(Rect(x1, y1, x2, y2), Bitmap.Canvas,
    Rect(0, 0, Bitmap.Width, Bitmap.Height));

  Printer.EndDoc;
  Bitmap.Free;
end;

Надеюсь, что модуль Printers Вы подключить не забыли. И ещё, не забудьте поменять названия компонентов PrintDialog и Panel.
__________________
Чем больше знаешь, тем сильнее осознаёшь, что знаешь гораздо меньше, чем не знаешь!..
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:40.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025