PDA

View Full Version : ایجاد Ranking در فرم های Bound



Milad_ATM
دوشنبه 14 آذر 1401, 09:14 صبح
با سلام خدمت اساتید
دوستان من با توجه به کارهایی که هر کاربر در فرم های مختلف انجام میده به اونها یک امتیاز میدم و میخوام در یک فرم جمع امتیازات و وضعیت کیفیت کاربر رو در قالب تصویر نمایش بدم

154328

همونطور که میبینید همه چیز انجام شده
فقط رنگهایی که میبینید طبق امتیاز کاربر و کد زیر Visible میشن!


Dim UserWh As IntegerUserWh = Weight1.Value




If UserWh >= 0 And UserWh < 10 Then
txtUserRank = "Marginal"
Me.imgRank1.Visible = True
ElseIf UserWh >= 10 And UserWh < 15 Then
txtUserRank = "Affected"
Me.imgRank1.Visible = True
Me.imgRank2.Visible = True
ElseIf UserWh >= 15 And UserWh < 20 Then
txtUserRank = "Satisfying"
Me.imgRank1.Visible = True
Me.imgRank2.Visible = True
Me.imgRank3.Visible = True
ElseIf UserWh >= 20 And UserWh < 25 Then
txtUserRank = "Potential"
Me.imgRank1.Visible = True
Me.imgRank2.Visible = True
Me.imgRank3.Visible = True
Me.imgRank4.Visible = True
Me.imgRank5.Visible = True
ElseIf UserWh >= 25 And UserWh < 200 Then
txtUserRank = "Key Player"
Me.imgRank1.Visible = True
Me.imgRank2.Visible = True
Me.imgRank3.Visible = True
Me.imgRank4.Visible = True
Me.imgRank5.Visible = True
Me.imgRank6.Visible = True
Else
txtUserRank = "- User Not Found"
Me.imgRank1.Visible = True
Me.imgRank2.Visible = False
Me.imgRank3.Visible = False
Me.imgRank4.Visible = False
Me.imgRank5.Visible = False
End If

مشکل اینجاست که این کد بر اساس رکورد اول همه رکورها رو تکرار می کنه!
راهکار شما برای اینکه هر رکورد تصویر مناسب به خودش رو نمایش بده چی هست!

mazoolagh
دوشنبه 14 آذر 1401, 19:29 عصر
سلام و روز خوش
اون کد نباید کار کنه (احتمالا در form current استفاده کردین)

ولی 2 راه بنظر میرسه:
1- اگر فقط یک چهارگوش رنگی ساده هست میتونین از conditional formatting به شکل زیر استفاده کنین:
یک textbox روی فرم بندازین (enabled=no, locked=yes) و برای هر حالت یک rule تعریف کنین شبیه به این
userwh between 0 and 10
و در اون background color رو مطابق خواسته تنظیم کنین (حواستون باشه که در همه ruleها دوباره enabled رو خاموش کنین وگرنه روشن میشه)

البته گویا شما حالت gauge مد نظرتون هست و نه یک چهارگوش تک رنگ - با این وجود برای تکمیل بحث باید گفته میشد.

mazoolagh
دوشنبه 14 آذر 1401, 19:41 عصر
2- میتونین بجای تصویر از button استفاده کنین و تصویر رو در اون بیارین:
هر تصویر در یک باتن،
back style = transparent
border = transparent

حالا هر شرطی دارین در رویداد detail paint بیارین:
Me.imgRank1.transparent= (userwh <0)
Me.imgRank2.transparent= (userwh <15)
...
...
Me.imgRank5.transparent= (userwh <25)

مشخصا اینجا imgrank منظور اسم button هست.

mazoolagh
دوشنبه 14 آذر 1401, 19:44 عصر
البته باحتمال زیاد راه های دیگه هم ممکنه باشه،
مثلا میتونین تصویر رو در خود table هم نگهداری کنین.

Milad_ATM
سه شنبه 15 آذر 1401, 08:57 صبح
با Conditional روی تکست باکس انجام شد
ممنون از شما:تشویق: