Тема: Печать Panel
Показать сообщение отдельно
  #7  
Старый 19.10.2012, 12:16
Heneken Heneken вне форума
Новичок
 
Регистрация: 11.09.2011
Сообщения: 73
Версия Delphi: Delphi XE6
Репутация: 10
По умолчанию Сопсна можно и так

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
tmpform:TForm;
l,t,h,w:integer;
begin
if print.Execute then   //Вибираем принтер компонент TPrintDialog с вкладки Dialogs
begin
tmpform:=Tform.Create(nil); //Создаем новую форму
//Копируем всю джигурду панели с которой будет таскать изображение
    l:=panel1.Left; //Записали в l положение по Left
    t:=panel1.Top;  //Записали в t положение по Top
    h:=panel1.Height; //Записали в h положение по Height
    w:=panel1.Width; //Записали в w положение по Width
    //Колдуем над формой
    tmpform.Height:=h;  //Делаем ее высоту такую же как и у панели
    tmpform.Width:=w;  //Делаем ее ширину такую же как и у панели
              //В верхний левый угол суем нашу панель(суем временно)
    panel1.Left:=0;
    panel1.Top:=0;
    tmpform.visible:=true;  //Делаем нашу новоиспеченную форму видимой
    form1.Visible:=false;  //Скрываем нашу основную форму(этот трюк можно и убрать)
    //И теперь Самое Гениальное!
    windows.SetParent(panel1.Handle,tmpform.Handle); //Тупо перерисовываем нашу панель в новую форму
    //А как известно для формы есть свойсво Print да и ваще с формаой проще печататься
    showmessage('Панель в печать!'); ///Вместо етого суйте че хотите..настройки отступы и т д..ну и спосна саму команду на печать
    windows.SetParent(panel1.Handle,Handle);///Как толлько печать выведена суем форму сами в себя)))Ну по коду так выходит)
    tmpform.visible:=false; //Делаем новую форму НЕвидимой
    tmpform.Destroy;//Убиваем нашу новую форму
    form1.Visible:=true; //Делаем нашу форму видимой
   //Восстанавливаем панель де она ии росла до Печати
    panel1.Top:=t;
    panel1.Left:=l;
end;
end;
              ///Саму процедуру печати я не расписываю, тут просто идея печати панели, что ты и просил. Пиши если уж не сообразишь как вывести на печать.
Ответить с цитированием