ورود

View Full Version : چاپ یک کامپوننت



SYNDROME
جمعه 04 خرداد 1386, 17:59 عصر
سلام
با سلام به همه دوستان گرامی
من می خواستم یکی از کامپونتهایی را که بر روی فرم قرار دادم چاپ کنم.
در سایت جستجو کردم تنها چیزی که پیدا کردم چاپ فرم است ولی من می خواهم فقط یک کامپونت از چند کامپونت داخل صفحه را چاپ کنم.
کامپونت را حتی بر روی QuickReport قرار دادم ولی نمایش نداد.(طبق معمول)

Mahmood_M
جمعه 04 خرداد 1386, 18:46 عصر
سلام
چه کامپوننتی هست ؟ ، از چه نوعی ؟ WinControl یا GraphicControl یا ... ؟

babak869
جمعه 04 خرداد 1386, 19:09 عصر
لطفا در مورد سوالتون بیشتر توضیح بدید

SYNDROME
جمعه 04 خرداد 1386, 19:54 عصر
با سلام

سلام
چه کامپوننتی هست ؟ ، از چه نوعی ؟ WinControl یا GraphicControl یا ... ؟
بابک جان چطوری؟
این کامپونت برای ایجاد ChART است و نام آن TChartSpace است.
من نمودار را با آن رسم می کنم ودر صفحه نمایش داده می شود ولی برای چاپ هیچ گزینه ای ندارد.برای همین می خواهم با روش دیگری آن را چاپ کنم.

Mahmood_M
جمعه 04 خرداد 1386, 22:41 عصر
سلام
اگه طریقه گرفتن عکس از دسکتاپ رو بدونی ، توی اون یک DC باید مشخش کنی که برای گرفتن عکس از دسکتاپ ، ما Handle مربوط به دسکتاپ رو به تابع می دیم ، حالا اگه به جای دسکتاپ توی همون تابع ، اندازه تصویر رو برابر با کامپوننت مورد نظر ( Chart ) قرار بدی و DC مربوطه رو به Handle مربوط به Chart نسبت بدی ، میتونی تصویر Chart رو ذخیره کنی ، البته کامپوننت باید از نوع WinControl باشه که احتمالا ChartObject هست ...
من برای این که مشکلی نباشه یه نمونه درست کردم که این کار رو انجام میده ، یعنی از کامپوننت Chartfx که روی فرم گذاشتم یک عکس میگیره ، که کامپوننت شما هم فکر کنم از هین Chartfx مشتق شده باشه که در این صورت مشکلی نیست ...
میتونی دانلود کنی :
http://www.parsaspace.com/nabegheh/DelphiTutrials/GetChartShot.rar
حجم : 5 کیلوبایت !

موفق باشی ...

babak869
شنبه 05 خرداد 1386, 08:50 صبح
سیندروم عزیز سلام

یادمه که یکی از عناصر کامپوننت InfoPower 4000 از عناصر و آیتمهای فرم عکس به فرمتهای مختلف تهیه میکرد ما دقیقا نامش یادم نیست . دقیقا متوجه شدم که چکار میخوای بکنی

البته روشی که آقا محمود هم گفتند بد نیست اما اون روش از کل صفحه فرم شما عکس میگیره نه فقط یه کنترل خاص .البته هنوز مثالشون رو ندیدم

یه نمونه از سایت Delphi.About گرفتم ببینید بکارتون میاد

موفق باشید

Mahmood_M
شنبه 05 خرداد 1386, 09:05 صبح
البته روشی که آقا محمود هم گفتند بد نیست اما اون روش از کل صفحه فرم شما عکس میگیره نه فقط یه کنترل خاص .البته هنوز مثالشون رو ندیدم

سلام
نه ، این طور نیست ، چون Handle مربوط به Chart به عنوان DC گرفته میشه ، عکس از فرم نمی گیره بلکه فقط کامپوننت رو توی عکس می اندازه !

موفق باشید ...

dkhatibi
شنبه 05 خرداد 1386, 10:13 صبح
با دستور Form1.print می تونید فرم را به صورت عکسی چاپ کنید.

soroush_vs
شنبه 05 خرداد 1386, 11:43 صبح
درسته به نظر من همین طوری که آقای خطیبی هم گفتن بیای Chart رو Client کنی بعد Form1.Pront رو صدا کنی.این یه راهه اما مشکلی که داره اینه که کیفیت چاپش اصلا خوب نیست.
کیفیت چاپ با این روش واقعا بده.

Arman_1367
شنبه 05 خرداد 1386, 14:42 عصر
با اجازه دوستان من این پروسه را برای شما نوشتم اگر بخواهید می توانید از آن استفاده کنید.
Procedure PrintControl(AControl:TControl;ABit:TBitmap);
Var R:TRect;
C:TCanvas;
Begin
If (AControl is TWinControl) then
Begin
C:=TCanvas.Create;
C.Handle:=GetWindowDC(TWinControl(AControl).Handle );
End
Else
Begin
C:=TControlCanvas.Create;
TControlCanvas(C).Control:=AControl;
End;
ABit.Width:=AControl.Width;
ABit.Height:=AControl.Height;
R:=Rect(0,0,ABit.Width,ABit.Height);
ABit.Canvas.CopyRect(R,C,R);
C.Free;
End;


یا حق...