ايران ويج

نسخه‌ی کامل: پرينت كردن در VB
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
با درود . . .

من تازه دارم با VB كار ميكنم. الان به يه مشكل بر خوردم حسابي.
موقعي كه دستور پرينت فرم رو ميدم تنها اون مقداري از فرم كه در صفحه نمايش قابل روئيت هست پرينت ميشه. يعني اگه فرم ايجاد شده بزرگتر از صفحه نمايش باشه بايد قيد پرينت كردنشو زد.
از اساتيد اين كاره كسي ميتونه كمكي كنه؟؟؟

يه سوال ديگه هم داشتم: همونطور كه داخل بعضي از نرم‌افزارها ديديد يه كادر توي منوي فايل هست كه معمولا printer setup نام داره و ميشه باهاش تنظيمات پرينتر رو انجام داد(نوع كاغذ و...). توي VB هم ميشه يه چنين كاري رو انجام داد؟

از يكي از دوستام شنيدم كه توي دات نت با كريستال... ميشه اين كارو كرد و تازه سده تر هستش. ولي مشكل من اينه كه بايد با VBباشه

با تشكر . . .
به نام سازنده ای که ساختن را ساخت

(۰۸-فروردین-۱۳۸۹, ۰۱:۳۷:۲۶)v.nassiri نوشته است: [ -> ]موقعي كه دستور پرينت فرم رو ميدم تنها اون مقداري از فرم كه در صفحه نمايش قابل روئيت هست پرينت ميشه. يعني اگه فرم ايجاد شده بزرگتر از صفحه نمايش باشه بايد قيد پرينت كردنشو زد.
از اساتيد اين كاره كسي ميتونه كمكي كنه؟؟؟

يه سوال ديگه هم داشتم: همونطور كه داخل بعضي از نرم‌افزارها ديديد يه كادر توي منوي فايل هست كه معمولا printer setup نام داره و ميشه باهاش تنظيمات پرينتر رو انجام داد(نوع كاغذ و...). توي VB هم ميشه يه چنين كاري رو انجام داد؟

از يكي از دوستام شنيدم كه توي دات نت با كريستال... ميشه اين كارو كرد و تازه سده تر هستش. ولي مشكل من اينه كه بايد با VBباشه

با تشكر . . .


پاسخ سوال اول:

شما باید خاصیت AutoRedraw فرم را برابر True قرار دهید

با استفاده ازاین خصیصه (کی خسیسه ؟)فرم شما دایره ها و خط هایی که

با استفاده از دستور line و circle کشیده اید پاک نمیشوند


پاسخ سوال دوم:

شما باید از یک دیاگ کنترل استف کنی

نام :Microsoft Common Dialog Control

مثال : اگر نام کنترلی که شما افزوده باشید "لارستان_باید_استان_بشه"

باشد آنگاه :

ShowPrinter.لارستان_باید_استان_بشه

نام من:علی

تاریخ تولد:11/4/74


محل تولد : لارستان فارس
با تشكر

ام بازم نشد.
autoredraw رو فعال كردم اما بازم كار نميكنه.
قضيه اينه كه من يه فرم A4 ميخوام بسازم كه يه متن توش جا شه و بعد بشه پرينتش كرد.
مشكل اينجاست كه وقتي فرم رو براي A4 تنظيم ميكنيم قسمت پايين فرم از پايين مانيتور ميزنه بيرون و وقتي هم كه پرينمت ميشه فقط قسمتي كه داخل صفحه مانيتور بوده پرينت ميشه.
راه حلي به نظرتون ميرسه؟

راجع به اون ديالوگ كنترل هم انجامش دادم اما اونم نشد. كادر پرينتر مياد بالا ولي وقتي دكمه پرينت رو ميزنم كار نميكنه و وقتي چند بار فشارش ميدم كادر بسته ميشه.
دقیقا توضیح بدید که چی رو پرینت کنه


من کد پرینتر تو VB دارم که میاد اونچه که تو textbox هست رو پرینت میگیره

Printer.ScaleMode = vbCentimeters
Printer.Height = 34.5
Printer.Width = 24.5
Printer.RightToLeft = True
Printer.Font.Name = "nazanin"
Printer.Font.Size = 12
Printer.CurrentX = 10
Printer.CurrentY = 10
Printer.Print Text1.Text
Printer.EndDoc

اگر میخواهید از آبجکت های روی فرم پرینت گرفته شود:

Me.PrintForm

اگر میخواهید از عکس پرینت گرفته شود :


پروژه ی زیر را دانلود کنید :

http://uploading.com/files/6491bdm5/Printdatagrid.zip <---منبع:http://vb-access.blogfa.com/post-21.aspx


من احساس کردم که در فروم زیر سوالی همانند سوال شما مطرح شده بود:

http://forum.p30world.com/showthread.php?t=238184
با تشكر از اينكه جواب ميديد
كل ماجرا رو بگم بهتره:
من رشته تحصيليم الكترونيكه و يه خورده تو بيسيك هم دستو پا ميزنيم
حالا براي كارمون احتياج داريم كه هي نامه بفرستيم و منم گفتم بيام سادش كنم.ديگه از WORD خسته شدم از بس باهاش كار كردم...
كل فرم تقريبا يه چنين حالتي داره البته يه عكس هم (يه لوگو) بعدا قراره بالاش بذاريم.

[تصویر:  1269806248.jpg]


نوع كاغذ در اكثر موارد A5 و بعضي مواقع هم كه متن زيادتري بايد نوشته بشه A4 هستش.
يه چند باري امتحان كردم و براي پرينت كردن از دستور form1.printform استفاده كردم. موقع پرينت قسمت راست صفحه (حدود 1 سانت) پرينت نميشد كه بچه ها گفتن پيشفرض پرينتر كاغذ لتر هستش و دليلش اونه.
حالا از اين بگذريم وقتي اندازه فرم رو به 12000 و 19000 (تقريبا برابر A4) در مياريم فرم به اندازه اي بزرگ ميشه كه پايين فرم از مانيتور ميزنه بيرون و زماني هم كه هر نوشته اي توي اون قسمت پايين باشه پرينت نميشه.

فكر كنم كامل گفتم ها؟؟

حالا يه قضيه اي اون كادر تنظيمات پرينتر كه معرفي كرديد چطور بايد باهاش كار كرد؟ وقتي روي دكمه پرينت كليك ميكنم كار نميكنه؟؟؟


با تشكر و معذرت از اينكه سرتونو درد آوردم.
كسي نيست جواب بده؟؟؟
دوست عزیز

برای نمایش دیالوگ باکس پرینتر بعد از قرار دادن عنصر CommonDialog1 بر روی فرم، از دستور زیر برای نمایش کادر تنظیمات پرینتر استفاده کنید:

CommonDialog1.ShowPrinter

برای چاپ یک صفحه کامل خیلی خیلی بهتره که از برنامه هایی مثل کریستال ریپورت استفاده کنید چون این برنامه ها به سادگی هرچه تمامتر هر اونچه که احتیاج دارید رو به صورت حرفه ای در اختیارتون قرار می ده و می تونید از اون در سیستم های مختلف هم بدون اشکال استفاده کنید

اما در هر صورت در خود VB هم می تونید این کار رو انجام بدید، کافیه کل محتوای فرم رو داخل یک PictureBox بریزید و از محتوای اون پرینت بگیرید.
با تشكر از راهنماييتون
من از يه چنين روشي استفاده كردم

Private Sub print1_Click()
Dim intLoopIndex As Integer
On Error GoTo Cancel
pprint.PrinterDefault = True
pprint.ShowPrinter
For intLoopIndex = 1 To pprint.Copies
Printform
Next intLoopIndex
Cancel:
End Sub
[align=right]

به نظرتون درسته؟؟؟

اين روش فقط همون مقداري رو كه توي صفحه نمايش داده ميشه پرينت ميكنه.
اندازه فرم من 16000 در 12000 هستش.
اين قضيه picture رو ميشه بگيد چطور بايد پرينتش كرد؟؟

ميتونيد لطف كنيد كدش رو برام بنويسيد؟؟
با تشكر . . .
كسي نميدونه؟؟؟
(۰۸-فروردین-۱۳۸۹, ۲۱:۴۷:۰۵)v.nassiri نوشته است: [ -> ]حالا از اين بگذريم وقتي اندازه فرم رو به 12000 و 19000 (تقريبا برابر A4) در مياريم فرم به اندازه اي بزرگ ميشه كه پايين فرم از مانيتور ميزنه بيرون و زماني هم كه هر نوشته اي توي اون قسمت پايين باشه پرينت نميشه.

اولا شما نباید بگید تقریبا 19000 و12000 هست اندازه دقیق رو بدست بیارید

و سپس واحد اندازه گیری فرم رو از Twip به pixel تغییر بدید و اندازه ی کاغذ رو

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

پیشنهاد:

اگر شما یک تکست باکس مخفی بگذارید که کاربر پس از وارد کردن موضوع ، تاریخ

، شماره و متن و کلیک روی دکمه ی پرینت همه ی اینها در آن تکست باکس

مخفی یک جا بشه;مثلا:

کد:
Private Sub پرينت_Click()
' لارستان بايد استان بشه استان لارستان بشه
تکست_مخفي.Text = تکست_مخفي.Text + شماره.Text + vbNewLine


تکست_مخفي.Text = تکست_مخفي.Text + تاريخ.Text + vbNewLine

تکست_مخفي.Text = تکست_مخفي.Text + موضوع.Text + vbNewLine

تکست_مخفي.Text = تکست_مخفي.Text + "باسمه تعالي" + vbNewLine


تکست_مخفي.Text = تکست_مخفي.Text + متن.Text


Printer.ScaleMode = vbCentimeters
Printer.Height = 34.5
Printer.Width = 24.5
Printer.RightToLeft = True
Printer.Font.Name = "nazanin"
Printer.Font.Size = 12
Printer.CurrentX = 10
Printer.CurrentY = 10
Printer.Print تکست_مخفی.Text
Printer.EndDoc







End Sub


در ضمن من سورس یه برنامه داشتم (حالا یادم نیست آزمون گیر بود یا ثبت شماره

تلفن) که میومد از اطلاعات داده شده پرینت میگرفت


در مورد پرینت از عکس هم باید بگم که من سورسش رو بالا (تو اولین پاسخی که

دادم) برات گذاشتم اما اشکال نداره یه لینک دیگه برات میذارم اما ممکنه

سورسش فرق کنه

سایت:http://www.barnamenevis.org/forum/showthread.php?p=583113


آقا همگی برای استان شدن لارستان کهن دعا کنید
[attachment=4759]

امیدوارم کمک کنه
صفحه‌ها: 1 2