View Full Version : چگونگی چاپ یک کامپوننت که بر روی فرم قرار دارد؟
SYNDROME
شنبه 02 تیر 1386, 15:51 عصر
با سلام
دوستان من می خواهم یک کامپونت را که در صفحه قرار دارد چاپ کنم.
اگر فرم را پرینت بگیرم نمی توانم آن را کنترل کنم و از صفحه بیرون می زند ویا نمی توانم آن را LandScape کنم.
منتظر راهنمایی شما هستم.
Mahmood_M
شنبه 02 تیر 1386, 16:02 عصر
سلام
ولی قبلا هم همین سئوال رو پرسیده بودی و من برنامه نمونه برات گذاشتم ، چرا از همون استفاده نمی کنی ؟ کامپوننت مورد نظرت چیه ؟
SYNDROME
شنبه 02 تیر 1386, 16:22 عصر
با سلام
چون پیدا نکردم فکر کردم ایجاد نکردم.:لبخند:
به هر حال شرمنده.:اشتباه:
با روشهایی که دوستان گفتند از صفحه عکس می گیرم و در یک فایل ذخیره می کنم ولی چطور باید آنرا روی چاپگر بفرستم و تنظیمات مربوط به چاپ را انجام بدهم؟
نمی خواهم از PreViewخود ویندوز استفاده کنم.
منظر راهنمایی شما هستم.
dkhatibi
شنبه 02 تیر 1386, 17:13 عصر
توجه کن که این روش کیفیت چاپ جالبی ندارد.
SYNDROME
شنبه 02 تیر 1386, 21:00 عصر
با سلام
توجه کن که این روش کیفیت چاپ جالبی ندارد.
می دونم ولی مجبورم این کار را بکنم.
حالا کسی نیست ما را راهنمایی کند!!!
Mahmood_M
یک شنبه 03 تیر 1386, 11:49 صبح
سلام
با اضافه کردن یونیت Printers به قسمت Uses فرم ، میتونی از شی Perinter برای چاپ استفاده کنی ، امکانات کاملی در اختیارت میزاره ، از جمله مشخص کردن تعدا کپی ها ، Print To File ، انتخاب Printer ، ست کردن Printer پیش فرض و ویرایش و تغییر صفحات ، ایجاد صفحه و ...
یک مثال ساده :
Printer.BeginDoc;
Printer.Canvas.TextOut(20, 40, 'Hello!, My Name is Mahmood');
Printer.EndDoc;
با اجرای دستور EndDoc ، عملیات Print هم آغاز میشه ، و هر ویرایشی که میخوای روی صفحه انجام بدی باید قبل از EndDoc و بعد از BeginDoc باشه ...
لازم نیست که متغیری به عنوان Printer ایجاد کنی ، البته برای تغییر پرینتر پیشفرض و برای پرینت گرفتن با پرینتری غیر از پرینتر پیشفرض باید متغیر ایجاد بشه ( امیدوارم منظورم رو خوب رسونده باشم )
نکته آخر این که اگه میخوای یک عکس رو چاپ کنی ، باید عکس مورد نظرت رو در Canvas مربوط به Printer رسم کنی و بعد عمل چاپ رو انجام بدی ...
درضمن ، پرینت گرفتن با استفاده از یونیت Printers ، روی کیفیت چاپ تاثیر منفی چندانی نداره ...
من قبلا یه مقاله در مورد توابع گرافیکی در سایت گذاشته بودم ، با کمی جستجو پیداش میکنی ( "مقاله : توابع گرافیکی و استفاده از آنها ..." )
این مقاله میتونه برای رسم کمکت کنه ...
موفق باشی ...
SYNDROME
یک شنبه 03 تیر 1386, 14:52 عصر
با سلام
آقا محمود دستت درد نکنه.
من با توجه به دستورات شما تا حدودی مشکلم حل شد.
کد زیر را نوشتم:
Var
MyBmp : TBitmap;
Rec : TRect;
begin
Printer.BeginDoc;
MyBmp := TBitmap.Create;
Rec := Rect(0, 0, 10000, 10000);
MyBmp.LoadFromFile('C:\Es.bmp');
Printer.Canvas.BrushCopy(Rec, MyBmp, Rec, clWhite);
Printer.Printers.
Printer.EndDoc;
end;
ولی دوتا مشکل دارم.
1-چه کار کنم تا عکس را به اندازه صفحه A4 چاپ کند؟(نمی خواهم آن را بکشد و کل صفحه را پر کند -عکس را تا جایی که امکان دارد از دو طرف بزرگ کند)
2-چطور نحوه چاپ را به صورت LandScape قرار بدهم؟
3-حال اگر عکسی که من تهیه می کنم Jpg باشد باید چه کار کنم؟
با تشکر فراوان از شما.
Mahmood_M
دوشنبه 04 تیر 1386, 08:27 صبح
سلام
1-چه کار کنم تا عکس را به اندازه صفحه A4 چاپ کند؟(نمی خواهم آن را بکشد و کل صفحه را پر کند -عکس را تا جایی که امکان دارد از دو طرف بزرگ کند)
راستش خودم هم نتونستم ، دقیق اندازه رو درست کنم ، نمی دونم چرا تصویر رو کوچیک می کنه ! ، از دستور Draw استفاده کن ، شاید من اندازه ها رو اشتباه دادم !
2-چطور نحوه چاپ را به صورت LandScape قرار بدهم؟
با کد زیر :
Printer.Orientation := poLandscape;
3-حال اگر عکسی که من تهیه می کنم Jpg باشد باید چه کار کنم؟
اگه از دستور Draw برای رسم استفاده کنید دیگه فکر نکنم فرقی کنه که BMP باشه یا JPG ، چون ورودی این تابع از نوع TGraphic هست ...
موفق باشید ...
SYNDROME
دوشنبه 04 تیر 1386, 16:26 عصر
با سلام
آقا محمود گل دستت درد نکنه.
خیلی کمک کردی.
راستش خودم هم نتونستم ، دقیق اندازه رو درست کنم ، نمی دونم چرا تصویر رو کوچیک می کنه ! ، از دستور Draw استفاده کن ، شاید من اندازه ها رو اشتباه دادم !
از دستور زیر استفاده کن.
Printer.Canvas.StretchDraw(Rec, MyBmp)
مشکل حل شد.
از همه دوستان متشکرم
Mahmood_M
دوشنبه 04 تیر 1386, 17:49 عصر
از دستور زیر استفاده کن.
کد:
Printer.Canvas.StretchDraw(Rec, MyBmp)
سلام
درسته ، ولی این دستور عکس رو میکشه و اندازه واقعیش چاپ نمی کنه ...
به هر حال خوشحالم که مشکلت حل شد ...
موفق باشید ...
SYNDROME
دوشنبه 04 تیر 1386, 20:14 عصر
سلام
درسته ، ولی این دستور عکس رو میکشه و اندازه واقعیش چاپ نمی کنه ...
به هر حال خوشحالم که مشکلت حل شد ...
موفق باشید ...
ولی شما با این روش می توانید با توجه به سایز عکس خود که با تابع TBitmap به دست می آورید عکس را با نسبت درست بزرگ کنید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.