PDA

View Full Version : روش عوض کردن نوع کاغذ با کد



forodo
دوشنبه 10 تیر 1392, 10:45 صبح
چطور می توان موقع پرینت گرفتن با کد نوع پورتریت یا لنداسکیپ کاغذ را مشخص کرد؟؟؟

forodo
دوشنبه 10 تیر 1392, 12:01 عصر
یکی به دادم برسه!

forodo
دوشنبه 10 تیر 1392, 14:26 عصر
دوستان خواهش می کنم.

forodo
دوشنبه 10 تیر 1392, 22:14 عصر
یعنی هیچ کس نمی دونه چون من می دونم که تو برنامه نویسی نمیشه نداریم!!!!!!!!!؟؟؟؟؟؟؟؟؟؟

forodo
سه شنبه 11 تیر 1392, 08:40 صبح
بابا یکی بگه دیگه!

noroozifar
سه شنبه 11 تیر 1392, 08:46 صبح
اگر از کریستال ریپورت یا استیمول جهت گزارش گیری استفاده میکنی برو داخل سایت خودشان فکر کنم کدهایش باشد یک سر تو سایتشان بزنید

forodo
یک شنبه 16 تیر 1392, 09:09 صبح
این کلاسی که برای پرینت گرفتن از فرم نوشتم.

using


System;

using


System.Collections.Generic;

using


System.ComponentModel;

using


System.Data;

using


System.Drawing;

using


System.Linq;

using


System.Text;

using


System.Windows.Forms;

using


System.Data.OleDb;

using


System.Data;

using


System.Drawing.Printing;

namespace


PJ

{



class PrintFromForm

{



public void pprriinntt(Form f, PrintDocument dp, PrintDialog p)

{



foreach (Control ctrl in f.Controls)

{



if (ctrl.GetType().Name.ToString() == "Button")

{

ctrl.Visible =

false;

}

}

f.FormBorderStyle =

FormBorderStyle.None;

p.ShowDialog();

dp.Print();

}



public void pprriinntt(Form f, PrintDocument pd, PrintPageEventArgs e)

{



Bitmap b = new Bitmap(f.Width, f.Height);



int newWidth = (int)pd.DefaultPageSettings.PrintableArea.Width;



int newHeight = (int)pd.DefaultPageSettings.PrintableArea.Height;

f.DrawToBitmap(b,

new Rectangle(0, 0, f.Width, f.Height));

e.Graphics.DrawImage(b,

new Rectangle(0, 0, newWidth, newHeight), new Rectangle(0, 0, b.Width, b.Height), GraphicsUnit.Pixel);

}

}

}


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

forodo
یک شنبه 16 تیر 1392, 11:30 صبح
لطفاً راهنمایی کنید.

forodo
یک شنبه 16 تیر 1392, 14:52 عصر
HELP!!!
HELP!!!
HELP!!!

forodo
یک شنبه 16 تیر 1392, 16:31 عصر
کسی نیست کمک کنه؟؟؟

forodo
شنبه 22 تیر 1392, 16:57 عصر
لطفاً راهنمایی کنید.

forodo
شنبه 22 تیر 1392, 20:59 عصر
چرا کسی چیزی نمی گه؟؟؟

forodo
یک شنبه 23 تیر 1392, 13:00 عصر
واقعاً هیچ کس نمی خواهد جوابی بدهد؟؟؟؟؟؟؟؟؟؟؟؟؟؟

Y_Safaiee
یک شنبه 23 تیر 1392, 13:14 عصر
با سلام

ابتدا من که نفهمیدم چرا دوتا تابع شکل هم ساختین اولی دکمه ها رو پنهون میکنه سپس پرینت میکنه و دومی فرم رو پرینت میکنه!!!

اما تو تابع اولتون این کد نوع کاغذو عوض میکنه



public void pprriinntt(Form f, PrintDocument dp, PrintDialog p)
{
foreach (Control ctrl in f.Controls)
{
if (ctrl.GetType().Name.ToString() == "Button")
{
ctrl.Visible =false;
}
}

f.FormBorderStyle =FormBorderStyle.None;

p.ShowDialog();
dp.DefaultPageSettings.Landscape = true;
dp.Print();
}


و برای تابع دوم این کد جواب میده :


public void pprriinntt(Form f, PrintDocument pd, PrintPageEventArgs e)
{

Bitmap b = new Bitmap(f.Width, f.Height);
int newWidth = (int)pd.DefaultPageSettings.PrintableArea.Width;
int newHeight = (int)pd.DefaultPageSettings.PrintableArea.Height;

f.DrawToBitmap(b,new Rectangle(0, 0, f.Width, f.Height));
e.PageSettings.Landscape = true;
e.Graphics.DrawImage(b,new Rectangle(0, 0, newWidth, newHeight), new Rectangle(0, 0, b.Width, b.Height), GraphicsUnit.Pixel);

}


موفق باشی
بابت بایت

hossein_sh2008
یک شنبه 23 تیر 1392, 16:52 عصر
سلام
دوست عزيز يك راحل ساده اين كار هم اينه كه شما دوتا ريپورت درست كنيد كه يكي ‌ Landscape باشه بعد تو برنامتون بر حسب نياز هركدوم رو صدا بزنيد

با تشكر

forodo
دوشنبه 24 تیر 1392, 14:39 عصر
با سلام

ابتدا من که نفهمیدم چرا دوتا تابع شکل هم ساختین اولی دکمه ها رو پنهون میکنه سپس پرینت میکنه و دومی فرم رو پرینت میکنه!!!

اما تو تابع اولتون این کد نوع کاغذو عوض میکنه



public void pprriinntt(Form f, PrintDocument dp, PrintDialog p)
{
foreach (Control ctrl in f.Controls)
{
if (ctrl.GetType().Name.ToString() == "Button")
{
ctrl.Visible =false;
}
}

f.FormBorderStyle =FormBorderStyle.None;

p.ShowDialog();
dp.DefaultPageSettings.Landscape = true;
dp.Print();
}


و برای تابع دوم این کد جواب میده :


public void pprriinntt(Form f, PrintDocument pd, PrintPageEventArgs e)
{

Bitmap b = new Bitmap(f.Width, f.Height);
int newWidth = (int)pd.DefaultPageSettings.PrintableArea.Width;
int newHeight = (int)pd.DefaultPageSettings.PrintableArea.Height;

f.DrawToBitmap(b,new Rectangle(0, 0, f.Width, f.Height));
e.PageSettings.Landscape = true;
e.Graphics.DrawImage(b,new Rectangle(0, 0, newWidth, newHeight), new Rectangle(0, 0, b.Width, b.Height), GraphicsUnit.Pixel);

}


موفق باشی
بابت بایت
درست شد ولی می خوام کل صفحه رو بگیره.
قبلش وقتی می خواست پرینت یگیره در کل برگه می گرفت ولی وقتی کدای شما رو می گذارم برگه lanscape میشه ولی فرم رو در کل صفحه جای نمیده.