تور لحظه آخری
امروز : جمعه ، 8 تیر 1403    احادیث و روایات:  پیامبر اکرم (ص):كسى كه در دنيا به امانتى خيانت كند و آن را به صاحبش برنگرداند و آنگاه بميرد بر دين...
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

تبلیغات متنی

اتاق فرار

خرید ووچر پرفکت مانی

تریدینگ ویو

کاشت ابرو

لمینت دندان

ونداد کولر

صرافی ارکی چنج

صرافی rkchange

دانلود سریال سووشون

دانلود فیلم

ناب مووی

رسانه حرف تو - مقایسه و اشتراک تجربه خرید

سرور اختصاصی ایران

تور دبی

دزدگیر منزل

تشریفات روناک

اجاره سند در شیراز

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

پیچ و مهره

طراحی کاتالوگ فوری

دانلود کتاب صوتی

تعمیرات مک بوک

Future Innovate Tech

آموزشگاه آرایشگری مردانه شفیع رسالت

پی جو مشاغل برتر شیراز

قیمت فرش

آموزش کیک پزی در تهران

لوله بازکنی تهران

ویترین طلا

کاشت پای مصنوعی

مورگیج

میز جلو مبلی

سود سوز آور

پراپ رابین سود

هتل 5 ستاره شیراز

آراد برندینگ

رنگ استخری

سایبان ماشین

قالیشویی در تهران

مبل استیل

بهترین وکیل تهران

مبلمان اداری

شرکت حسابداری

نظرسنجی انتخابات 1403

استعداد تحلیلی

کی شاپ

خرید دانه قهوه

دانلود رمان

وکیل کرج

آمپول بیوتین بپانتین

پرس برک

بهترین پکیج کنکور

خرید تیشرت مردانه

خرید نشادر

خرید یخچال خارجی

وکیل تبریز

اجاره سند

 






آمار وبسایت

 تعداد کل بازدیدها : 1802654506




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

سوال در مورد پرینت - ویژوال بیسیک -


واضح آرشیو وب فارسی:سایت ریسک: سوال در مورد پرینت - ویژوال بیسیک S.H.M 21 دي 1387, 21:31یک سوال داشتم من می خواستم وقتی توی vb فرم رو پرینت می گیرم ، فرم در بالا و وسط صفحه پرینت گرفته بشه باید چه کنم؟ the_king 22 دي 1387, 00:01یک سوال داشتم من می خواستم وقتی توی vb فرم رو پرینت می گیرم ، فرم در بالا و وسط صفحه پرینت گرفته بشه باید چه کنم؟ توصیه می کنم که تا جای امکان از از PrintForm استفاده نکنید، متد PrintForm نوشته های روی فرم را بصورت یک تصویر چاپ می کنه که کیفیت مناسبی برای چاپ نداره. بهتر است که از یک روتین اختصاصی استفاده کنید. متاسفانه شخصا روتین هایی برای این منظور نوشته ام مناسب استفاده شما نیستند، زیادی حرفه ای اند. کد زیر را در سایت پیدا کردم که برای مقصود ما مناسب بود. ویرایش کردم و تغییرش دادم تا فرم را در وسط صفحه برده و با توجه به طول کاغذ تغییر اندازه داده و چاپ کند. این گونه روتین ها کنترلهایی را چاپ می کنند که قبلا در کد برنامه شان تعریف شده، مثلا این روتین کنترل ListBox را نمی شناسد و چاپ نمی کند. یک ماژول (Module) مثلا Module1 به پروژه تان اضافه کنید و کد زیر را در آن کپی نمایید : Option Explicit Private BaseY As Double Public Sub PrintMyForm(MyForm As Form) Dim Obj As Object Dim Factor As Double Dim FormScaleMode As Integer FormScaleMode = MyForm.ScaleMode MyForm.ScaleMode = vbTwips Printer.ScaleMode = vbTwips Factor = Printer.Height / Printer.Width Printer.Scale (0, 0)-(MyForm.Width, MyForm.Width * Factor) BaseY = (Printer.ScaleHeight - MyForm.Height) / 2 For Each Obj In MyForm If Obj.Visible Then PrintObject Obj End If Next Obj MyForm.ScaleMode = FormScaleMode Printer.EndDoc End Sub Public Sub PrintObject(Obj As Object) If TypeOf Obj Is Line Then PrinMyLine Obj ElseIf TypeOf Obj Is TextBox Then PrinTxt Obj ElseIf TypeOf Obj Is Label Then PrinLbl Obj ElseIf TypeOf Obj Is PictureBox Then PrintPicture Obj ElseIf TypeOf Obj Is Image Then PrintImage Obj End If End Sub Public Sub PrinTxt(Txt As TextBox) With Txt Printer.ForeColor = .ForeColor Printer.Font = .Font Printer.Font.Name = .Font.Name Printer.Font.Charset = .Font.Charset Printer.Font.Bold = .Font.Bold Printer.Font.Italic = .Font.Italic Printer.Font.Size = .Font.Size Printer.Font.Strikethrough = .Font.Strikethrough Printer.Font.Underline = .Font.Underline Printer.Font.Weight = .Font.Weight Select Case .Alignment Case vbCenter Printer.CurrentX = .Left + (.Width - Printer.TextWidth(.Text)) / 2 Case vbLeftJustify Printer.CurrentX = .Left Case vbRightJustify Printer.CurrentX = .Left + .Width - Printer.TextWidth(.Text) End Select Printer.CurrentY = BaseY + .Top Printer.Print .Text End With End Sub Public Sub PrinLbl(Lbl As Label) With Lbl Printer.ForeColor = .ForeColor Printer.FontTransparent = (.BackStyle = 0) Set Printer.Font = Lbl.Font Printer.Font.Name = Lbl.Font.Name Printer.Font.Charset = .Font.Charset Printer.Font.Bold = .Font.Bold Printer.Font.Italic = .Font.Italic Printer.Font.Size = .Font.Size Printer.Font.Strikethrough = .Font.Strikethrough Printer.Font.Underline = .Font.Underline Printer.Font.Weight = .Font.Weight Select Case .Alignment Case vbCenter Printer.CurrentX = .Left + (.Width - Printer.TextWidth(.Caption)) / 2 Case vbLeftJustify Printer.CurrentX = .Left Case vbRightJustify Printer.CurrentX = .Left + .Width - Printer.TextWidth(.Caption) End Select Printer.CurrentY = BaseY + .Top Printer.Print .Caption End With End Sub Public Sub PrintPicture(Pic As PictureBox) With Pic Printer.PaintPicture .Image, .Left, BaseY + .Top, .Width, .Height End With End Sub Public Sub PrintImage(Img As Image) With Img Printer.PaintPicture .Picture, .Left, BaseY + .Top, .Width, .Height End With End Sub Public Sub PrinMyLine(MyLine As Line, Optional DrawWidth As Integer = 10) With MyLine Printer.DrawWidth = DrawWidth Printer.Line (.X1, BaseY + .Y1)-(.X2, BaseY + .Y2) End With End Sub تابع PrintMyForm فرم مورد نظر را چاپ خواهد کرد، مثلا : PrintMyForm Form1 S.H.M 22 دي 1387, 12:12نشد اصلا فرم رو پرینت نمی گیره یعنی چاپ میکنه ولی صفحه سفید S.H.M 22 دي 1387, 15:47خیلی فوریه من یک فرم دارم با 10 20 تا لیبل اندازه فرم خوبه کیفیت چاپ فرم خوبه فقط جاش درست نیست گوشه بالا سمت راست میزنه که می خوام وسط چاپ کنه the_king 22 دي 1387, 17:38نشد اصلا فرم رو پرینت نمی گیره یعنی چاپ میکنه ولی صفحه سفید خیلی فوریه من یک فرم دارم با 10 20 تا لیبل اندازه فرم خوبه کیفیت چاپ فرم خوبه فقط جاش درست نیست گوشه بالا سمت راست میزنه که می خوام وسط چاپ کنه کد مشکلی نداره، نمی دونم کدوم قسمت کار رو درست انجام ندادید. یک فرم نمونه را که داخلش یک Label و یک PictureBox و سه TextBox بود را ایجاد کردم و Print گرفتم. بدون مشکل چاپ شد. خروجی بصورت یک فایل pdf به همراه پروژه کامل و فایل exe ضمیمه این پست می باشد. S.H.M 24 دي 1387, 07:52بله فهمیدم چی شد این برنامه جای فرم رو تغییر نمیده بلکه جای لیبل یا تکست باکس و ... رو تغییر میده و فقط از نطر عمودی اونو میبره وسط که کار BaseY هست. Luna 20 17 اسفند 1387, 16:24سلام دوستان ممنونم از مطلب مفیدتون من میخوام مستقیم فرم رو به پرینتر بفرستم اگه میشه سریعتر جواب بدین




این صفحه را در گوگل محبوب کنید

[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 2510]

bt

اضافه شدن مطلب/حذف مطلب







-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن