PDA

View Full Version : پرینت فرم



tazekar
پنج شنبه 17 مهر 1382, 14:00 عصر
سلام
چطور از فرمها پرینت بگیرم ؟
من هر کاری میکنم کاراکترهای حروفی که توی ادیت باکسها نوشته شده اند رو پرینت نمیگیره . ولی اعداد داخل ادیت باکس رو پرینت میگیره و اعداد و حروفی رو که بوسیله label توی فرم قرار دادم رو هم پرینت میگیره .

houshmand
پنج شنبه 17 مهر 1382, 15:27 عصر
ساده ترین راه با

Form1.Print;
:lol: :lol: :lol:

tazekar
پنج شنبه 17 مهر 1382, 18:03 عصر
سلام
علی آقای عزیز خوب منم با همین دستور پرینت گرفتم . اما همون مشکلای بالا برام پیش اومد .

SReza1
پنج شنبه 17 مهر 1382, 18:21 عصر
میتونی از خاصیت canvas استفاده کنی!! مثلا اینکه
form1.canvas رو در canvas پرینتر کپی کنی

tazekar
پنج شنبه 17 مهر 1382, 22:02 عصر
آقا رضا میشه بگید چطور این کار رو انجام بدم ؟ :oops:

tazekar
پنج شنبه 17 مهر 1382, 22:24 عصر
سلام
مشکلم حل شد . کلا نمیتونسته محتویات dbeditbox ها رو چاپ کنه . :shock:
اما یه مشکل دیگه :
وقتی برنامه اجرا میشه یه پرینت از همون صفحه ای که میخوام گرفته میشه .
واضحتر بگم : مثلا من برای صفحه صدور فاکتور یه دونه دستور print گذاشتم اما وقتی برنامه حسابداری باز میشه یه صفحه خالی فاکتور چاپ میشه !! :shock: :shock: :shock:
اگه ممکنه کمکم کنید . :cry: :cry: :cry:

SReza1
جمعه 18 مهر 1382, 08:59 صبح
مثلا می خواهی محتویات فرم رو در داخل image کپی کنی
image1.Width := Form1.Width;
image1.Heigth := Form1.Heigth;

Image1.Canvas.Copyrect(Rect(0,0,Form1.Width,Form1. Heigth),Form1.Canvas,Rect(0,0,Form1.Width,Form1.He igth))


این کار هر چی در فرمت داری به روی image میریزه! حالا می تونی به جای image از prinatre استفاده کنی

Printre.canvas......

امیدوارم مشکلت حل بشه!! :D

Kambiz
جمعه 18 مهر 1382, 13:07 عصر
مثلا می خواهی محتویات فرم رو در داخل image کپی کنی
image1.Width := Form1.Width;
image1.Heigth := Form1.Heigth;

Image1.Canvas.Copyrect(Rect(0,0,Form1.Width,Form1. Heigth),Form1.Canvas,Rect(0,0,Form1.Width,Form1.He igth))


این کار هر چی در فرمت داری به روی image میریزه! حالا می تونی به جای image از prinatre استفاده کنی

Printre.canvas......

امیدوارم مشکلت حل بشه!! :D
متد Print فرم هم دقیقا" همین کار رو می‌کنه بدین صورت که اول تصویر فرم رو بصورت Bitmap می‌گیره و بعد اون رو به DIB Bitmap تبدیل می‌کنه و این تصویر رو رو Canvas پرینتر می‌کشه.
تبدیل Bitmap به DIB Bitmap برای اینه که درایور بعضی از چاپگرها تصویر با فرمت دیگه‌ای رو قبول نمی‌کنند.

DIB = Device Independent Bitmap

tazekar
جمعه 18 مهر 1382, 18:59 عصر
سلام
ممنون از راهنماییهاتون .
اما مشکلات من مثل اینکه نمیخواد تموم بشه . :cry: :cry:
حالا تا اونجایی که مانیتور نشون میده پرینت میشه و بقیه فرم .... :?:
تورو خدا کمکم کنید . :cry:
دیگه کم کم داره اعصابم رو خورد میکنه . :evil: :evil: :x :evil: :evil:

SReza1
شنبه 19 مهر 1382, 11:19 صبح
سلام
جناب delphi area همیشه درست میگه :oops:

houshmand
شنبه 19 مهر 1382, 12:48 عصر
حالا تا اونجایی که مانیتور نشون میده پرینت میشه و بقیه فرم .... :?:

خوب این موضوع در راهنمای دلفی نیز گفته شده است :) و چون در این روش از Form عکس گرفته و پرینت می شود فقط قسمتی که دیده می شود پرینت می شود
Call Print to print the form. Print uses the GetFormImage method to obtain a bitmap of the form and draws that to the printer ’ s HDC.
:!: برای پرینت کردن یک روش قویتر ولی یک کم مشکل تر نیز وجود دارد برای اطلاعات بیشتر در باره این روش به راهنمای دلفی موضوع با عنوان
TPrinter,overview :arrow:
مراجعه کنید

JavanSoft
شنبه 19 مهر 1382, 18:45 عصر
آیا بهتر نیست بجای چاپ فرم یک صفحه گزارش طراحی کنید؟

tazekar
شنبه 19 مهر 1382, 23:14 عصر
ممکنه ساده تر باشه اما حالا میخوام بدونم اینو چکارش باید کرد :wink:
در ضمن با report هم یه کمی مشکلات دارم . :cry: