PDA

View Full Version : سوال: مقایسه لیبل تعداد بالا



leoarsalan
دوشنبه 30 خرداد 1390, 22:58 عصر
سلام دوستان
می خواستم بدونم که من الان تو فرم برنامه ام 181 لیبل دارم که برنامه به صورت روندم توشون نوشته رو نمایش میده من ماخوام این 181 لیبل رو با حداقل کد ممکنم مقابسه کنم و با یک حلقه دو هم میخوام اینکار رو انجام بدم در واقع کد بنده برای جستجو این هست و لی خودتون می دونید که این همه لیبل مقایسشون هم وقت زیاد میبره و هم کد نویسی زیادی میخوام من از این کد برای مقایسه لیبل استفاده میکنم
Do While Label1.Caption=Label2.caption or Label3.caption or Label4.caption or Label5.caption
Label1.Caption = Text9(Rnd() * Text9.UBound).Text
Loop
این تنها برای مقایسه لیبل 1 بود با لیبل های 2 و 3 و 4 و 5 که این حلقه تا زمانی انجام میشه که لیبل یک با یکی از اون لیبل ها برابر باشه حالا من این کد رو باید تا لیبل 181 بنویسم تازه فقط این لیبل نیست :افسرده::ناراحت:

خواهشا یک راهنمایی کنید :گریه::گریه:

محسن واژدی
دوشنبه 30 خرداد 1390, 23:09 عصر
سلام علیکم
در صورت امکان کمی واضح تر توضیح بدین، یعنی کمی بیشتر درباره مقایسه labelها با هم توضیح بدین به عبارت دیگر چجور مقایسه ای هست

leoarsalan
دوشنبه 30 خرداد 1390, 23:24 عصر
ببین دوست عزیز شما امروز به من کد انتخاب رندوم از تکس باکس رو دادی ؟ درسته
حالا من این کد رو دارم بعد من میخوام با این کد 14 تا نام تو تکس باکس هام وارد میکنم این تکس باکس ها با یک ایندکس هستن و بعد از زدن کامند به حالت رندوم این نوشته ها در لیبل ها نمایش داده میشن حالا من این حلقه Do که در بالا قرار دادم به خاطر این هستش که مقایسه کنه و نوشته تکراری در تکس باکس ها نزاره البتهاین رو میدونم که نمیشه 14 تا رو تو 181 تکراری نباشه اما من میخوام که 14 تا 14 تا توش تکراری نباشه

محسن واژدی
سه شنبه 31 خرداد 1390, 01:07 صبح
برای اینکار یک پیشنهاد دارم
میتوانید در هربار مقایسه یکی از برچسب ها با سایرین، داده های سایر برچسب ها را در یک متغیر ذخیره سپس در هربار و فقط یکبار مقدار برچسب مورد نظر را با همه سایر برچسب ها مقایسه کنید که اگر مقدار این برچسب در مقادیر ذخیره شده وجود داشت بدین معناست که مقدار این برچسب مساوی مقدار یکی از سایر برچسب هاست

leoarsalan
سه شنبه 31 خرداد 1390, 01:15 صبح
درسته این راه خوبی هست اما ایا راه ساده تری برای انجام این کار نیست ؟؟:متفکر::اشتباه:

محسن واژدی
سه شنبه 31 خرداد 1390, 08:45 صبح
یک راه دیگر هم که قبلا" در مورد آن عرض شد تبدیل 181 کنترل به آرایه کنترل است که فکر کنم این ایده آل تر باشد سپس در هردفعه فقط یکبار بایک حلقه For یک یا چند تا از برچسب ها را با برچسب مورد نظر مقایسه میکنیم، دستوری شبیه دستور زیر:
Option Explicit
Dim intTarLblIndx%
Private Sub Command1_Click()

Dim i%

For i = Label1.LBound To Label1.UBound

If Label1(intTarLblIndx%) <> Label1(i) And Not intTarLblIndx% = i Then
'Continue True commands
Else
'Continue False commands
Exit For
End If

Next i

End Sub

intTarLblIndx% نیز Index برچسب انتخاب شده میباشد
البته چون حلقه بالا فقط یک بار مقایسه را انجام میدهد یعنی عملکرد حلقه Do را ندارد میتوانید دستورات را در یک Timer قرار دهید که در اینصورت دستورات شبیه زیر میشوند:
Option Explicit
Dim intTarLblIndx%

Private Sub Timer1_Timer()

Static i%

Timer1.Interval = 1
i = i + 1

If Label1(intTarLblIndx%) <> Label1(i) And Not intTarLblIndx% = i Then
'Continue True commands
Else

'Continue False commands
End If

If i >= Label1.UBound Then i = Label1.LBound

End Sub


موفق باشید

leoarsalan
سه شنبه 31 خرداد 1390, 11:37 صبح
ممنون این بهتر از قبلی ها کمکم کرد مرسی