PDA

View Full Version : Printing ScrollBox Content



arash63
شنبه 22 اسفند 1383, 18:48 عصر
با سلام

من تازه شروع به کار با دلفی کردم و کاملا مبتدی هستم .

یه سوال :

من یک ScrollBox دارم که حاوی چند
Panel می باشد که هر Panel دارای چندین Panel تو در تو است که درون آنها محتویاتی وجود دارد .

چطور می تونم از کل مجتویات این ScrollBox یک Print بگیرم .

دوشنبه 24 اسفند 1383, 10:24 صبح
تنها راهی که به ذهنم میرسه و یا بگم آسون ترین راه اینه که از صفحه فرم ات یا هر قسمتی که میخوای یک عکس بگیر و اون عکس رو واسه پرینت بفرست .


:موفق:

hr110
دوشنبه 24 اسفند 1383, 10:49 صبح
من در یک پروژه مجبور بودم که از برخی از فرمهایم تصویر بگیرم، در این فرمها نیز همانند فرمهای شما انواع و اقسام کنترلها وجود داشت.
فرم و برخی از اشیاء در دلفی یک پراپرتی با نام Canvas دارند که شما در اصل تصویری از محتویات آن میباشد، همچنین Canvas یک متد با نام CopyRect دارد که میتوانید از آن استفاده نماید و محتویات را به یک Image انتقال داده و در نهایت میتوانید Image را ذخیره نمایید، به این بخش از کد برنامه توجه کنید:


TabControl1: TTabControl;
Image1: TImage;



procedure TFormSaver.SaveToFile(FileName:string);
var
I : Integer;
R2 : TRect;
begin
Image1.Width:=TabControl1.Width;
Image1.Height:=TabControl1.Height;
R2:=Rect(0,0,TabControl1.Width,Height);
TabControl1.Top:=0;
I:=0;
while True do
begin
TabControl1.Top:=-I;
Sleep(100);
Application.ProcessMessages;
Image1.Canvas.CopyRect(R2,TabControl1.Canvas,R2);
I:=I+Height;
R2:=Rect(0,I,TabControl1.Width,I+Height);
if I>TabControl1.Height then Break;
end;
Image1.Picture.SaveToFile(FileName);
end;

من معمولاً در فرمهای مذکور از یک تب کنترلر استفاده میکردم که اشیاء درون انرا بتوان به سادگی اسکرول نمود.
ممکن است محتویات پنلها و یا اجزای دیگری که از TWinControl گرفته شده اند نمایش داده نشود که با کمی دقت میتوانید این بخش را هم به این متد استفاده کنید.