PDA

View Full Version : سوال: عدم سازگاری نمودار codejock با نوشته های فارسی ؟!



ali190
دوشنبه 24 مرداد 1390, 00:34 صبح
باسلام و عرض خسته نباشید
بعد از مدتی کار کردن با کریستال ریپورت در بخش گزارشات نموداری و عدم موفقیت در نمایش این نمودار در vb6 تصمیم گرفتم احتیاجات نموداریم رو از طریق دیگه ای برآورده کنم
به پیشنهاد دوستان به چارت codejock روی آوردم ولی در کمال ناباوری دیدم این کنترل با نوشته های فارسی مشکل داره
به طری که اگر در قسمت اطلاعات با نوشته های فارسی مواجه بشه مقدار اون داده رو به میزان یک رقم کمتر نشون میده
مثلاً عدد 3 رقمی رو بصورت 2 رقمی نشون میده
به مثال ضمیمه توجه بفرمائید
آیتم "فرانسه" با اینکه مقدار 431 براش در نظر گرفته شده
431,"فرانسه" Series.Points.Add
ولی در نمودار 43 نمایش داده میشه
ولی این قضیه برای اطلاعات انگلیسی کاملاً درست جواب میده
ممنون
یاعلی

vbhamed
دوشنبه 24 مرداد 1390, 02:14 صبح
سلام

مشكل جالبي بود
به شكل زير حل ميشه

Series.Points.Add "فرانسه" & vbCr, 431

ali190
دوشنبه 24 مرداد 1390, 14:35 عصر
سلام
واقعاً مشکل عجیب و جالبی بود
دستتون درد نکنه
مشکلم حل شد
یاعلی

king ag
سه شنبه 25 مرداد 1390, 09:27 صبح
سلام
ببخشید که سووالمو اینجا مطرح میکنم
ولی ترجیح دادم اینجا بگم
من الان با این کامپوننت چارت میخوام کار کنم
ولی زیاد بلد نیستم
اگر آموزشی وجود داره بی زحمت بزارید
و یک خواهش دیگه هم داشتم
بی زحمت میتونید بگید چطور میشه به صورت تصویر سیو کرد؟
منظ چطور از کنترل saveasimage باید استفاده کرد؟
ممنون
موفق باشید

ali190
سه شنبه 25 مرداد 1390, 16:27 عصر
Dim x, y As Integer
x = ChartControl.Width
y = ChartControl.Height
ChartControl.SaveAsImage App.Path + "\Chart.png", x, y

king ag
سه شنبه 25 مرداد 1390, 19:31 عصر
قربون دستت
همون تیکه ورود آدرس رو نمیدونستم کجاش باید بزارم
ولی عکسش همچین جالب نمیشه
نمیشه یکم کیفیتش رو بالا برد؟
یه چیز دیگه هم این که واحد خروجی کامپیوتر پیکسل هست
ولی این پیکسل نیست
بی زحمت میشه نسبت پیکسل به این عدد رو بگید
(حوصله ندارم حساب کنم :لبخند:)

ali190
سه شنبه 25 مرداد 1390, 19:55 عصر
Dim x, y As Integer
x = ChartControl.Width
y = ChartControl.Height
Me.ScaleMode = 3
ChartControl.SaveAsImage App.Path + "\Chart.png", x, y

king ag
سه شنبه 25 مرداد 1390, 20:04 عصر
ببخشید انقدر سوال میپرسم
چه فرمت های تصویری رو قبول میکنه؟
جی پی جی و پی ان جی رو میدونم

ali190
سه شنبه 08 شهریور 1390, 17:09 عصر
سلام
باز یه مشکل جدید دیگه در این نمودار کشف کردم
زمانیکه اطلاعاتتون با حروف فارسی شروع میشه و در اون رشته عدد هم وجود داشته باشه باز هم اون مشکلی که در پست اول توضیح داده بودم پیش میاد (یعنی عدد n رقمی در نمودار n-1 رقم نمایش داده میشه که اطلاعات رو غیر واقعی میکنه)
زمانیکه رشته با حروف انگلیسی شروع میشه و درش عدد هم وجود داشته باشه مشکلی پیش نمیاد
مثلاً در نمونه پیوستی "شیر 2 اینچ" و "shir 2 inch" هر دو تعدادشون 100 میباشد
ولی "شیر 2 اینچ" در نمودار با مقدار 10 و "shir 2 inch"با مقدار درست 100 نمایش داده میشه
نمونه رو جهت بررسی خدمتتون قرار میدم
ممنون
یاعلی

ali190
چهارشنبه 09 شهریور 1390, 17:53 عصر
سلام
باز یه مشکل جدید دیگه در این نمودار کشف کردم
زمانیکه اطلاعاتتون با حروف فارسی شروع میشه و در اون رشته عدد هم وجود داشته باشه باز هم اون مشکلی که در پست اول توضیح داده بودم پیش میاد (یعنی عدد n رقمی در نمودار n-1 رقم نمایش داده میشه که اطلاعات رو غیر واقعی میکنه)
زمانیکه رشته با حروف انگلیسی شروع میشه و درش عدد هم وجود داشته باشه مشکلی پیش نمیاد
مثلاً در نمونه پیوستی "شیر 2 اینچ" و "shir 2 inch" هر دو تعدادشون 100 میباشد
ولی "شیر 2 اینچ" در نمودار با مقدار 10 و "shir 2 inch"با مقدار درست 100 نمایش داده میشه
نمونه رو جهت بررسی خدمتتون قرار میدم
ممنون
یاعلی
سلام
بذارید توضیح واضحتری از مشکل رو بیان کنم
در هر رشته ای که بعد از حرف فارسی عدد بیاد این مشکل رخ میده نه قبلش (در هر جایی که این اتفاق بیفته ، در اول ، وسط یا آخر رشته)
با این حساب نمودار به ازای داده های زیر دچار مشکل میشه و یک رقم کمتر رو نمایش میده:
م1
aaaaaa م1
aaaaa م1 aaaaaaa
مثلاً برای اگر در عبارت "م1" بین حرف "م" و عدد 1 یک حرف واسط انگلیسی قرار بگیرد عبارت درست میشود "مa 1"
این مشکل در داده ها با تنوع بالا برنامه رو فلج میکنه و باعث میشه اعداد به صورت کاملاً عیر واقعی نمایش داده بشن
به نظرتون این مشکل قابل رفع هستش
مشکل اول با کمک جناب vbhamed مرتفع شد
بیصبرانه منتظر نظرات شما عزیزان هستم
ممنون
یاعلی

vbhamed
شنبه 12 شهریور 1390, 11:01 صبح
سلام

با استفاده از روش زير هر رشته اي كه قراره بفرستيد به كنترل رو رو به يونيكد تبديل كنيد، كاراكتر vbCr هم تو همين تابع اضافه شده

Function cToF(s As String) As String

On Error Resume Next

i = 1
While i < Len(s)
If IsNumeric(Mid$(s, i, 1)) Then
Mid$(s, i, 1) = ChrW(Asc(Mid$(s, i, 1)) + 1584)
End If
i = i + 1
Wend

s = s & vbCr
cToF = s

End Function

Sub AddSeries()

If ChartControl.Content.Series.Count > 0 Then
ChartControl.Content.Series.DeleteAll
End If

ChartControl.Content.Titles.Add "Corporate Actives"

Dim Series As ChartSeries
Set Series = ChartControl.Content.Series.Add("Corporate Actives")

Series.Points.Add cToF("شيرگازي"), 431
Series.Points.Add cToF("شير 32 اينچ 31 سر"), 100
Series.Points.Add cToF("shir 2 inch"), 100

Series.PointLegendFormat = "{A} : {V}"

End Sub

ali190
شنبه 12 شهریور 1390, 22:26 عصر
سلام
جناب Vbhamed عزیز
ممنون از پاسختون ٰ ولی مشکل کماکان باقیست
نمونه رو خدمتتون آپلود میکنم (همرا با تابعی که معرفی کردین)
مثلاً در مورد گزینه "شير 32 اينچ" باز هم به مشکل خوردم

یه سئوال دیگه هم از خدمتتون داشتم
آیا میشه به آبجکتی که خاصیت Right To Left نداره این خاصیت رو با کدنویسی افزود یا نه؟
یاعلی

vbhamed
یک شنبه 13 شهریور 1390, 00:12 صبح
سلام

اين كه درسته مشكلش چيه ؟

74799

ali190
یک شنبه 13 شهریور 1390, 21:51 عصر
سلام جناب Vbhamed
من با استفاده از کد های شما و با مقادیر زیر نمودار رو ساختم:

Series.Points.Add cToF("شيرگازي"), 431
Series.Points.Add cToF("شير 32 اينچ"), 100
Series.Points.Add cToF("shir 2 inch"), 100
ولی نتیجه این شد:

74852


شیر 32 اینچ مقدارش 100 بود ولی تو نمودار 10 رو نشون میده
داخل نمونه قرار داده شده هم این مقدار 100 هست. (http://barnamenevis.org/attachment.php?attachmentid=74795&d=1315074357)
ملاحظه بفرمائید
یاعلی


http://barnamenevis.org/images/misc/pencil.png

vbhamed
یک شنبه 13 شهریور 1390, 23:13 عصر
سلام

تو پوشه اي كه كدجاك رو نصب كردين فايل Codejock.ChartPro.Unicode.v15.0.1.ocx رو رجيستر كنيد كه ورژن Unicode كنترل هست