PDA

View Full Version : مبتدی: راهنمایی در خصوص برنامه صدور چک



ozzy_mra
یک شنبه 02 اسفند 1388, 15:10 عصر
سلام
دوستان من می خوام یه برنامه صدور چک بنویسم ولی در خصوص پرینت مقادیر تکست روی کاغذ مشکل دارم کسی می تونه منو راهنمایی کنه ؟ یا اصلاً باید از ابزار دیگه ای استفاده کنم مثل کریستال ریپورت؟
راهی هست فقط از روی کنترل های روی صفحه فقط مقدار تکستشو چاپ کنم و فرم و پس زمینه و تکست باکس و ... چاپ نشه؟

mustafa13
یک شنبه 02 اسفند 1388, 15:20 عصر
سلام
دوست عزيز شما بايد از كريستال ريپورت يا اكتيو ريپورت و... استفاده كني براي اين كار شما يك فرمي مانند چك را طراحي كنيد و مقداريي كه را بايستي چاپ شود را چاپ مي كند
اگه سوالي داشتي هستم خدمتتون

ghameshloe
یک شنبه 02 اسفند 1388, 22:26 عصر
شما در این مورد میتونید یک فرم مثل چک بسازید واز اون پرینت بگیرید

csharpprogramer88
یک شنبه 02 اسفند 1388, 23:23 عصر
كريستال بهتره

water_lily_2012
یک شنبه 02 اسفند 1388, 23:54 عصر
سلام
شما فقط یه متن را چاپ کن.
یعنی به این صورت:

e.Graphics.DrawString(text, printFont,System.Drawing.Brushes.Black, 100, 100);

ozzy_mra
دوشنبه 03 اسفند 1388, 07:26 صبح
سلام
دوست عزيز شما بايد از كريستال ريپورت يا اكتيو ريپورت و... استفاده كني براي اين كار شما يك فرمي مانند چك را طراحي كنيد و مقداريي كه را بايستي چاپ شود را چاپ مي كند
اگه سوالي داشتي هستم خدمتتون

سلام ممنونم منم فکر می کنم کریستال بهتر باشه فقط تنظیمات پرینترو چکار کنم که فیت چک بشه؟ با آزمون و خطا تا اینکه فیت بشه یااینکه راه داره تنظیم کنم فقط اندازه چک پرینت بگیره؟

ozzy_mra
سه شنبه 04 اسفند 1388, 07:29 صبح
راهی برای ایجائ فرم برای پرینت بجز ابزار های ریپورت سازی وجود نداره؟ مثلاً یه صفحه سفید بیاد فقط اطلاعاتی که می خوام توش باشه و همونو واسه پرینت بفرسته مثل برنامه های صدور حکم یا چاپ قبض برق که روی فرم های پیش فرض چاپ می کنه؟

AliRezaPro
سه شنبه 04 اسفند 1388, 08:51 صبح
راهی برای ایجائ فرم برای پرینت بجز ابزار های ریپورت سازی وجود نداره؟ مثلاً یه صفحه سفید بیاد فقط اطلاعاتی که می خوام توش باشه و همونو واسه پرینت بفرسته مثل برنامه های صدور حکم یا چاپ قبض برق که روی فرم های پیش فرض چاپ می کنه؟
شما میتوانید مقادریز تکست باکس را در کاغذ با استفاده از کلاس های گرافیک(GDI)بنویسید
اینو نگاه کن

Bitmap bim = new Bitmap(@"c:\Image.jpg");
Graphics graphicImage = Graphics.FromImage(bim);
graphicImage.DrawString(txtIdMember .Text , new Font("Arial", 12, FontStyle.Bold), SystemBrushes.WindowText, new Point(150, 70));

ozzy_mra
سه شنبه 04 اسفند 1388, 09:05 صبح
شما میتوانید مقادریز تکست باکس را در کاغذ با استفاده از کلاس های گرافیک(GDI)بنویسید
اینو نگاه کن

Bitmap bim = new Bitmap(@"c:\Image.jpg");
Graphics graphicImage = Graphics.FromImage(bim);
graphicImage.DrawString(txtIdMember .Text , new Font("Arial", 12, FontStyle.Bold), SystemBrushes.WindowText, new Point(150, 70));

سلام
وقتی اینو می نویسم ارور parameter is not valid میده

ozzy_mra
سه شنبه 04 اسفند 1388, 09:13 صبح
این پیغام خطا رو میده

Yasersadegh
سه شنبه 04 اسفند 1388, 09:43 صبح
سلام به همه دوستان عزيز
دوست من شما مي تونيد با استفاده از كلاس پرينتر و گرافيك به راحتي يه چك آماده رو بزاريد و هرجاش كه دوست داريد هرچيزي رو چاپ كنيد!! يعني بدون كريستال ريپورت و با استفاده از كد نويسي!!
توضيحات بيشتر رو در تاپيك زير نوشتم!!
http://barnamenevis.org/forum/showthread.php?p=889604
مطالعه كنيد اگه مشكلي بود در خدمتم!!:متفکر:
اميدوارم كه مشكلتون حل بشه!!
موفق باشيد:چشمک:

ozzy_mra
سه شنبه 04 اسفند 1388, 10:29 صبح
سلام به همه دوستان عزيز
دوست من شما مي تونيد با استفاده از كلاس پرينتر و گرافيك به راحتي يه چك آماده رو بزاريد و هرجاش كه دوست داريد هرچيزي رو چاپ كنيد!! يعني بدون كريستال ريپورت و با استفاده از كد نويسي!!
توضيحات بيشتر رو در تاپيك زير نوشتم!!
http://barnamenevis.org/forum/showthread.php?p=889604
مطالعه كنيد اگه مشكلي بود در خدمتم!!:متفکر:
اميدوارم كه مشكلتون حل بشه!!
موفق باشيد:چشمک:

ممنون ولی من همون کد مثالتونو کپی کردم printer is not valid زد در ضمن من خیلی متوجه نشدم مثلاً اگر من بخوام چند تا تکست رو تو صفحه چاپم بریزم چکار باید بکنم؟ ممکنه کمی بیشتر توضیح بدین؟

Yasersadegh
سه شنبه 04 اسفند 1388, 10:51 صبح
ممنون ولی من همون کد مثالتونو کپی کردم printer is not valid زد در ضمن من خیلی متوجه نشدم مثلاً اگر من بخوام چند تا تکست رو تو صفحه چاپم بریزم چکار باید بکنم؟ ممکنه کمی بیشتر توضیح بدین؟

خوب بله دوست عزيز شما بايد اسم پرينترتون رو در قسمت printername به صورت صحيح وارد كنيد و همچنين پرينتر هم متصل باشه و آماده چاپ!!

شما بايد ابتدا در بخش using خط زير رو اضافه كنيد:



using System.Drawing.Printing;

سپس كدهاي بخش اول همون تاپيك رو بر رويه دكمه چاپ بنويسيد!!
و در آخر هم تابع بخش دوم رو به برنامه اضافه كنيد! در اين تابع بايد هرچيزي كه مي خواهيد چاپ شود رو مي نويسيد و با سعي و خطا محل دقيق چاپ رو تنظيم مي كنيد!!
برايه چاپ متن مي تونيد تابع رو به شكل زير بنويسيد:



private void pd_PrintPage(object sender, PrintPageEventArgs ev)
{
SolidBrush br = new SolidBrush(Color.Black);
Font df = new Font("Arial", 14);
Pen p = new Pen(Color.Black, 5);
ev.Graphics.DrawString("YaserSadegh", df, br, 450, 450);
// ...
}

اميدوارم متوجه مطلب شده باشيد!:متفکر:
اگه مشكلي بود در خدمتم!
موفق باشيد:چشمک:

ozzy_mra
سه شنبه 04 اسفند 1388, 11:04 صبح
خیلی ممنونم درست شد فقط راهی هست که به صورت داینامیک پرینتر رو بشناسه یعنی تو هر سیستم پرینتر همون دستگاه رو شناسایی کنه و همچنین در مورد پرینتر های share شده باید آی پی رو هم اولش اضافه کنم؟ بهر حال مشکلم رو حل کردین و خیلی ممنونم:تشویق:

Warrior
سه شنبه 04 اسفند 1388, 14:02 عصر
آره, راهی هست که بتوان از طریق آن پرینتر را خود به خود شناسایی کرد و عمل چاپ را انجام داد؟

ممنونم

ozzy_mra
سه شنبه 04 اسفند 1388, 15:03 عصر
آره, راهی هست که بتوان از طریق آن پرینتر را خود به خود شناسایی کرد و عمل چاپ را انجام داد؟

ممنونم

راهشو تو سایت سرچ کردم پیدا کردم خیلی خوب و کامله
http://barnamenevis.org/forum/showthread.php?t=196451&highlight=بدست+آوردن+printer

ozzy_mra
سه شنبه 04 اسفند 1388, 15:04 عصر
یه سوال دیگه اگه من بخوام اگه طول یه فیلدم بیشتر شد تو دو سطر چاپ کنه باید چکار کنم مثلاً در مورد وجه چک معمولاً طولانی میشه و می خوام در این صورت تو دو سطر چاپبشه راهی هست که مثلاً بگیم طول این رسممون بیشتر از 30 شد بره از سر خط چاپ کنه؟

Yasersadegh
چهارشنبه 05 اسفند 1388, 08:38 صبح
یه سوال دیگه اگه من بخوام اگه طول یه فیلدم بیشتر شد تو دو سطر چاپ کنه باید چکار کنم مثلاً در مورد وجه چک معمولاً طولانی میشه و می خوام در این صورت تو دو سطر چاپبشه راهی هست که مثلاً بگیم طول این رسممون بیشتر از 30 شد بره از سر خط چاپ کنه؟
بله دوست عزيز ميشه انجام داد، ولي خودت بايد براش كد بنويسي و بگي كه اگه طول رشته فلان بيش از 30 يا n شد بقيه اش رو در فلان مختصات چاپ كن!!
با اين روش چاپ كردن(منظور استفاده نكردن از كريستال و اينجور چيزا) شما هر كاري كه بخواي مي توني انجام بدي و محدوديتي برات وجود نداره، و همش به كدنويسي خودت بستگي داره!!!

موفق باشيد:چشمک:

طبیب دل
شنبه 08 اسفند 1388, 09:36 صبح
سلام ببخشید این سئوال اینجا میپرسم
آیا میشه برای چاپ چک و یا فرمهایی مثل کارت عضویت از ابزاری استفاده کرد که خود کاربر بتونه فرم چاپ رو طراحی کنه؟ مثلا ابزاری مثل fast Report که گزارش گیری دینامیک در اختیار کاربر قرار میده

ozzy_mra
شنبه 08 اسفند 1388, 12:04 عصر
ممنون
حالا یه سوال دیگه اگر من بخوام تکستم رو عمودی چاپ کنم چکار باید کنم؟ الان تو بعضی از پرینتر ها چکو که میزارم به خاطر عرض کمش تو پرینتر گیر می کنه و مجبورم که چکو از طول بزارم ولی واسه این کارم باید تکست ها عمودی و از بالا به پایین نوشته بشه . راهی هست که direction تکستمو عوض کنم؟
ضمن اینکه چطور می تو نم اندازه ورق رو تنظیم کنم الان تو قطع آ4 چاپ می کنه چطور می تونم تنظیمش کنم که کاغذ اندازه چک باشه؟
ببخشید زیاد سوال می پرسم چون تو این کار واقعاً مبتدیم:خجالت:

Yasersadegh
شنبه 08 اسفند 1388, 12:51 عصر
سلام به دوستان عزيز

ممنون
حالا یه سوال دیگه اگر من بخوام تکستم رو عمودی چاپ کنم چکار باید کنم؟ الان تو بعضی از پرینتر ها چکو که میزارم به خاطر عرض کمش تو پرینتر گیر می کنه و مجبورم که چکو از طول بزارم ولی واسه این کارم باید تکست ها عمودی و از بالا به پایین نوشته بشه . راهی هست که direction تکستمو عوض کنم؟

دوست عزيز برايه اينكار شما مي تونيد تو قسمت دوم(يعني تابعي كه برايه چاپ نوشتيد) از كد زير استفاده كنيد و در حالت landscape صفحه رو چاپ كنيد:



e.PageSettings.Landscape = true;


ممنون
ضمن اینکه چطور می تو نم اندازه ورق رو تنظیم کنم الان تو قطع آ4 چاپ می کنه چطور می تونم تنظیمش کنم که کاغذ اندازه چک باشه؟

همچنين برايه انجام اينكار مي تونيد از كد زير استفاده كنيد:



PaperSize p1=new PaperSize("A4",5,9);
e.PageSettings.PaperSize = p1;

اميدوارم كه مشكلتون حل بشه!!
موفق باشيد:چشمک:

ozzy_mra
شنبه 08 اسفند 1388, 13:27 عصر
در مورد اندازه صفحه خیلی ممنونم
ولی منظور من از چاپ صفحه landscape نبود منظورم این بود مثل عکس پایین پرینت بگیره

ozzy_mra
یک شنبه 09 اسفند 1388, 10:14 صبح
با landscape کردن عمودی چاپ نمی کنه

ozzy_mra
یک شنبه 16 اسفند 1388, 07:21 صبح
از دوستان کسی می تونه منو راهنمایی کنه؟ مشکل من اینه که چک تو پرینتر گیر میکنه و باید به صورت عمودی چکو تو پرینتر بفرستم تا گیر نکنه؟ ولی چاپ کردن عمودی رو بلد نیستم:گریه:

ASKaffash
یک شنبه 16 اسفند 1388, 09:15 صبح
سلام
مانند مثال ذیل با هر زاویه ای میتوانید متن چاپ کنید :(this.Rotate زاویه است)


private void Draw(Graphics e)
{
float W = e.MeasureString(this.Text, this.Font).Width;
float H = e.MeasureString(this.Text, this.Font).Height;
double Ang = ((double)this.Rotate / 180 * Math.PI);
e.TranslateTransform(
(this.ClientRectangle.Width + (float)(H * Math.Sin(Ang)) - (float)(W * Math.Cos(Ang))) / 2,
(this.ClientRectangle.Height - (float)(H * Math.Cos(Ang)) - (float)(W * Math.Sin(Ang))) / 2
);
e.RotateTransform(this.mRotate);
e.DrawString(this.Text, this.Font, new SolidBrush(this.ForeColor), 0f, 0f);
e.ResetTransform();
}