
19.10.2012, 12:16
|
Новичок
|
|
Регистрация: 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;
///Саму процедуру печати я не расписываю, тут просто идея печати панели, что ты и просил. Пиши если уж не сообразишь как вывести на печать.

|