PDA

View Full Version : سوال: چطوری از طریق کد نویسی در c# برای فیلد هام در کریستال ریپورت فونت تعریف کنم؟



PAIZE 65
شنبه 17 بهمن 1388, 10:39 صبح
چطوری از طریق کد نویسی در c# برای فیلد هام در کریستال ریپورت فونت تعریف کنم؟

PAIZE 65
سه شنبه 20 بهمن 1388, 09:23 صبح
چطوری از طریق کد نویسی در C#‎ برای فیلد هام در کریستال ریپورت فونت تعریف کنم؟

راهنمایی کنید لطفا:افسرده:

mohsen.net
سه شنبه 20 بهمن 1388, 09:41 صبح
فکر نمی کنم همچین امکانی تو کریستال باشه
باید از برنامه های گزارش گیری پویا استفاده کنی
مثل active report

PAIZE 65
سه شنبه 20 بهمن 1388, 09:54 صبح
فکر نمی کنم همچین امکانی تو کریستال باشه
باید از برنامه های گزارش گیری پویا استفاده کنی
مثل active report

من تا حالا با ابزار دیگه ای کار نکردم هیچ اشنایی هم باهاشون ندارم بعدش هم من الان تمام کارم تکمیله فقط همین قسمتش مونده :افسرده:

Sharif Lotfi
یک شنبه 25 بهمن 1388, 13:05 عصر
چطوری از طریق کد نویسی در C#‎‎‎‎ برای فیلد هام در کریستال ریپورت فونت تعریف کنم؟
دوست عزیز این کد رو با VB.NET نوشتم و البته تبدیلش به C#‎ ساده است امیدوارم کارت راه بیفته
اگر نتونستی تبدیلش کنی بگو تا انجامش بدم


'در ابتدای کلاس مربوط به پرینت ها
Public rp As myReport = New myReport 'myReport.rpt نام فایل گزارش شما

'در بخش کد مربوط به کانفیگ گزارشتان
Dim txt1 As CrystalDecisions.CrystalReports.Engine.TextObject
Dim myFont1 As Font

myFont1 = New Font("Arial", 10, "1", GraphicsUnit.Pixel) 'new font(font name , font size , font style , font unit)
'یا myFont1= New Font("Arial", 10, FontStyle.Bold, GraphicsUnit.Pixel)

txt1 = rp.ReportDefinition.ReportObjects("Text1") '"Text1" نام تکست آبجکتی که از ویزارد انتخاب کرده و در فرم گزارش استفاده کرده اید
txt1.Text = "متن نمونه"
txt1.ApplyFont(myFont1)
'برای اینکه بعد از تغییر فونت سایز تکست آبجکت اندازه بشه من این ترفند رو بکار بردم
Dim e As Graphics
Dim stringSize As SizeF
e = Me.CreateGraphics
stringSize = e.MeasureString(txt1.Text, myFont1)
txt1.Height = CInt(stringSize.Height) * 20 'اعداد 20 و 15 تجربه من هستن شما می تونین تغییرشون بدین
txt1.Width = CInt(stringSize.Width) * 15

موفق باشید

PAIZE 65
سه شنبه 27 بهمن 1388, 10:22 صبح
سلام:لبخند:
من خیلی از شما ممنونم بالاخره یک نفر جواب من رو داد
من این کد ها رو تبدیل کردم اما یکی در مورد style فونت خطا میده یک خطا هم در خط
txt1 = rp.ReportDefinition.ReportObjects("Text1")
میشه کد C#‎ رو به من بدین:خجالت:

حامد مصافی
سه شنبه 27 بهمن 1388, 11:16 صبح
txt1 = rp.ReportDefinition.ReportObjects["Text1"];

PAIZE 65
سه شنبه 27 بهمن 1388, 12:48 عصر
txt1 = rp.ReportDefinition.ReportObjects["Text1"];



من هم همین کار رو کردم اما مشکل جای دیگه است تبدیل تمام کد انجام میشه اما در اجرا انگار نیتونه نسبت بده

حامد مصافی
سه شنبه 27 بهمن 1388, 13:04 عصر
بررسي كنيد آيا كنترلي با نام Text1 در گزارش موجود است يا خير.

PAIZE 65
سه شنبه 27 بهمن 1388, 13:11 عصر
بررسي كنيد آيا كنترلي با نام Text1 در گزارش موجود است يا خير.


اتفاقا اولین چیزی که به ذهنم رسید همین بود :متفکر: اما همین یک دونه بود

حامد مصافی
سه شنبه 27 بهمن 1388, 13:24 عصر
پس متن خطا را بنويسيد

Sharif Lotfi
سه شنبه 27 بهمن 1388, 18:17 عصر
به اين عكسها نگاه كنين آبجكت Text1 رو بايد در فرم گزارش دستي اضافه كرده باشين (عكس 1)
در مورد آبجكتهاي ديگه هم فقط دقت كنين اسم آبجكت رو درست عنوان كنين (عكس 2)

PAIZE 65
چهارشنبه 28 بهمن 1388, 09:23 صبح
ابجکت های من از نوع field هستند در قسمت تعریف هم این طوری تعریف کردم
CrystalDecisions.CrystalReports.Engine.FieldObject text1;
اما حالا از خط
text1 = rr.ReportDefinition.ReportObjects["harf1"];
این خطا رو میده
Error 8 Cannot implicitly convert type 'CrystalDecisions.CrystalReports.Engine.ReportObje ct' to 'CrystalDecisions.CrystalReports.Engine.FieldObjec t'. An explicit conversion exists (are you missing a cast?)

Sharif Lotfi
چهارشنبه 28 بهمن 1388, 18:44 عصر
اون دو خط رو درست نوشتين
شايد اشكال كارتون در معرفي فيلد "harf1" باشه يه كنترل بكنين كه dataset و dataTAble درست معرفي شده باشن

PAIZE 65
شنبه 01 اسفند 1388, 12:30 عصر
اون دو خط رو درست نوشتين
شايد اشكال كارتون در معرفي فيلد "harf1" باشه يه كنترل بكنين كه dataset و dataTAble درست معرفي شده باشن

از متن خطا فکر می کنم مشکلش اینه که نمی تونه نوع ReportObject رو به TextObject تبدیل کنه خیلی تست و چک کردم دیگه نمی دونم چکار کنم میشه کل کد vb که گذاشتین رو به c# تبدیل کنید ممنون:ناراحت:

Sharif Lotfi
شنبه 01 اسفند 1388, 17:45 عصر
دوست عزيز توي لينك هاي زير به مثالهايي كه توي سايت msdn نوشته يه نگاه بنداز . شايد مشكلتون حل شد .
http://msdn.microsoft.com/en-us/library/ms225739.aspx
http://msdn.microsoft.com/en-us/library/aa288406%28VS.71%29.aspx
و همينطور اين مثال :
http://aspalliance.com/1734_How_to_Change_Crystal_Report_Formatting_for_D ifferent_Customers__Part_2.4

PAIZE 65
یک شنبه 02 اسفند 1388, 10:31 صبح
ممنون از راهنمایی تون تقریبا مشکلم حل شد :چشمک:اما توی این خط style رو قبول نمیکنه در msdn هم مثالی براش پیدا نکردم


fieldFont.Font = new Font(new FontFamily(vb.DR_Public["m_font_type"].ToString()), float.Parse(vb.DR_Public["m_font_size"].ToString()), style[Convert.ToInt32(style_F(vb.DR_Public["m_font_style"].ToString()))]);

میشه بگین برای قبول کردن style چکار باید بکنم

Sharif Lotfi
یک شنبه 02 اسفند 1388, 19:46 عصر
يه خورده پيچيده نوشتين و الكي سختش كردين
به همون طريقي كه توي پست 5 نوشتم عمل كنين

FieldObject1.ApplyFont(myFont1)
اگرم دلتون ميخواد سخت و عجيب و غريب بنويسين مي تونين بجاي Style از رشته يا عدد "1" استفاده كنين (بجاي استايل Regular) و همينطور از اعداد ديگه براي Bold و ...
موفق باشي

PAIZE 65
سه شنبه 04 اسفند 1388, 09:24 صبح
خوب دوست عزیز من هم دلم نمی خواد پیچیده بنویسم چون من اطلاعات فونت رو قبلا در بانک ذخیره میکنم و از بانک مشخصات فونت هر قسمت رو میخونم که نوع اطلاعات بانک object است و باید تبدیل بشه شما اگه راه راحتتری برای خوندن اطلاعات از بانک دارین خیلی خوشحال میشم که به من هم یاد بدین:لبخندساده: ممنون

Sharif Lotfi
سه شنبه 04 اسفند 1388, 21:04 عصر
براي ذخيره style فونت در بانكتون و بازيابي اون همونطور كه گفتم از رشته "1" و ... استفاده كنين
مثلا "1" معادل استايل Regular هستش (90% فكر مي كنم اينطور باشه)

PAIZE 65
چهارشنبه 05 اسفند 1388, 11:04 صبح
آقای sharif lotfi من کاملا مشکلم حل شد :لبخندساده:
خواستم از شما بابت همه راهنمایی هاتون تشکر کنم :چشمک:

Sharif Lotfi
جمعه 07 اسفند 1388, 20:39 عصر
خوب خدا رو شكر
خواهش مي كنم . وظيفه بود
من هم جواب خيلي از سوالامو از دوستاني مثل شما تو همين سايت گرفتم