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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 31.08.2007, 10:47
STOROJ STOROJ вне форума
Прохожий
 
Регистрация: 31.08.2007
Сообщения: 2
Репутация: 10
По умолчанию печать компонента

У меня такая проблема мне надо вывести на печать содержимое компонента PageControl(или любого другого). Я использую пример из учебника
Код:
procedure TForm2.Button1Click(Sender: TObject);
var
 i, start, stop: integer;
begin
 PrintDialog1.Options:=[poPageNums,poSelection];
 PrintDialog1.FromPage:=1;
 PrintDialog1.ToPage:=PageControl1.PageCount;
 PrintDialog1.MinPage:=1;
 PrintDialog1.MaxPage:=PageControl1.PageCount;
 if not PrintDialog1.Execute then Exit;
 if PrintDialog1.PrintRange=prAllPages
 then
  begin
   Start:=PrintDialog1.MinPage-1;
   Stop:=PrintDialog1.MaxPage-1;
  end
 else // если выбрано отличное от 'Print All'
  if PrintDialog1.PrintRange=prSelection
  then
   begin
    Start:=PageControl1.ActivePageIndex;
    Stop:=Start;
   end
 else // если выбрано отличное от 'Выделенный фрагмент'
  begin
   Start:=PrintDialog1.FromPage-1;
   Stop:=PrintDialog1.ToPage-1;
  end;
 // начало печати
 Printer.BeginDoc;
 for i:=start to stop do
  begin
   PageControl1.Pages[i].PaintTo(Printer.Handle,500,500);
   if i<>stop
   then Printer.NewPage;
  end;
 Printer.EndDoc;  
end;
компонент печатается, но оочень маленький(в углу листа).
Вопрос как мне сделать так чтобы печатало нормальным размером в центре листа?
Ответить с цитированием
  #2  
Старый 31.08.2007, 11:27
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Читай учебник дальше, там, как раз в следующем примере, написано как настроить масштаб.
Ответить с цитированием
  #3  
Старый 31.08.2007, 13:08
STOROJ STOROJ вне форума
Прохожий
 
Регистрация: 31.08.2007
Сообщения: 2
Репутация: 10
По умолчанию

вощем добавил в код:
procedure TForm2.Button1Click(Sender: TObject);
Код:
var
X1,X2,Y1,Y2:integer;
 i, start, stop: integer;
 PointsX,PointsY:double;
begin
 PrintDialog1.Options:=[poPageNums,poSelection];
 PrintDialog1.FromPage:=1;
 PrintDialog1.ToPage:=PageControl1.PageCount;
 PrintDialog1.MinPage:=1;
 PrintDialog1.MaxPage:=PageControl1.PageCount;
 if not PrintDialog1.Execute then Exit;
 if PrintDialog1.PrintRange=prAllPages
 then
  begin
   Start:=PrintDialog1.MinPage-1;
   Stop:=PrintDialog1.MaxPage-1;
  end
 else // если выбрано отличное от 'Print All'
  if PrintDialog1.PrintRange=prSelection
  then
   begin
    Start:=PageControl1.ActivePageIndex;
    Stop:=Start;
   end
 else // если выбрано отличное от 'Выделенный фрагмент'
  begin
   Start:=PrintDialog1.FromPage-1;
   Stop:=PrintDialog1.ToPage-1;
  end;
 // начало печати
 Printer.BeginDoc;
 Printer.Canvas.Refresh;
 PointsX:=GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSX)/30;
 PointsY:=GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSY)/30;
 X1:=round((printer.PageWidth - Pagecontrol1.Width*PointsX)/2);
 Y1:=round((printer.PageHeight - Pagecontrol1.Height*PointsY)/2);
 X2:=round(X1+Pagecontrol1.Width*PointsX);
 Y2:=round(Y1+Pagecontrol1.Height*PointsY);
 Printer.Canvas.CopyRect(Rect(X1,Y1,X2,Y2),Pagecontrol1.Canvas,Rect(0,0,Pagecontrol1.Width,Pagecontrol1.Height));

 for i:=start to stop do
  begin
   PageControl1.Pages[i].PaintTo(Printer.Handle,500,500);
   if i<>stop
   then Printer.NewPage;
  end;
 Printer.EndDoc;
end;
картинка не на много увеличилась, лейблы в ней остались такого же размера. Объясните что в этом коде отвечает именно за масштабирование? И будут ли увеличиватся лейблы вместе с панелькой?
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter