ورود

View Full Version : سوال: کد نویسی کمتر در شی های متشابه



shahabbasic
جمعه 23 دی 1390, 22:28 عصر
من 30 تا label دارم که همه اسم هاشون اینجوریه :
label1 - label2 - label3 - label4 - label5 و ...
یعنی label در اسمشون ثابته و فقط عددشون یکی یکی زیاد شده
حالا من اگر بخوام visible همه رو مثلا false کنم لازمه که بیام بر تک تک لیبل ها بنویسم :
label X.visible=false
من فکر کردم یک حلقه for اضافه کنم و بجای روش اول اینجوری بنویسم :
for i=1 to 30
label(i).visible=false
next i
ولی جواب نمیده اینطوی هم مینویسم جواب نمیده :
for i=1 to 30
label" & i.visible=false"
next i

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

sr2m72
شنبه 24 دی 1390, 00:14 صبح
اگه تمام ليبل ها به صورت آرايه اي باشند(يعني انديس داشته باشن) مي تونيد از اين استفاده كنيد:
for i=1 to 30
label(i).visible=false
next i
ولي اينطوري فكر نكنم بشه.

shahabbasic
شنبه 24 دی 1390, 00:43 صبح
اگه تمام ليبل ها به صورت آرايه اي باشند(يعني انديس داشته باشن) مي تونيد از اين استفاده كنيد:
for i=1 to 30
label(i).visible=false
next i
ولي اينطوري فكر نكنم بشه.
این راه رو که خودم بالا گفتم نمیشه

ASedJavad
شنبه 24 دی 1390, 01:23 صبح
ببین عزیز
بهتره شما لیبل ها رو به صورت آرایه در بیاری
یعنی مثلا اسم همشون label باشه و اندیساشون (label.index) با هم متفاوت باشه (مثلا از 1 تا 30)
اینجوری اون کدی که دوستمون گذشتن، جواب میده

vbhamed
شنبه 24 دی 1390, 07:36 صبح
سلام

يك پروژه جديد باز كنيد
يك Label بزاريد و اسم اون رو بزاريد Label نه Label1
يك Label ديگه بزاريد و اسم اون رو هم تغيير بديد و بزاريد Label، سيستم به شما ميگه اسم تكراري داديد، مي خواين آرايه اي باشه ؟ Yes رو بزنيد
بقيه Label ها رو هم به همين ترتيب بزاريد و همون اسم Label رو بهشون بديد، ديگه خودشون آرايه اي ميشن بعد ميشه با دستور Label(i) مقدار دهي كرد
البته دومين Label رو كه گذاشتين مي‌تونيد ازش كپي بگيريد و بقيه رو Paste كنيد

IamOverlord
شنبه 24 دی 1390, 09:51 صبح
For i = 0 To Controls.Count - 1
If Mid$(Controls(i).Name, 1, 5) = "Label" And _
Val(Mid$(Controls(i).Name, 6, Len(Controls(i).Name) - 5)) > 1 - 1 And _
Val(Mid$(Controls(i).Name, 6, Len(Controls(i).Name) - 5)) < 30 + 1 Then
Controls(i).Visible = False
End If
Next

kitcat_m18
یک شنبه 25 دی 1390, 02:36 صبح
سلام،
با اجازه دوست خوبم IamOverlord (http://barnamenevis.org/member.php?72921-IamOverlord)

Dim CTL As Control

For Each CTL In Me.Controls
If TypeOf CTL Is Label Then
CTL.Caption = Empty
End If
Next

shahabbasic
یک شنبه 25 دی 1390, 12:13 عصر
من الان برام امکانش نیست که label هارو پاک کنم و دوباره به اون روشی که vbhamed گفت اندیسی کنم
همینجوری امکانش نیست؟

vbhamed
یک شنبه 25 دی 1390, 12:29 عصر
سلام

نياز نيست پاك كنيد، بريد اسمشون رو عوض كنيد و براشون يك اسم يكسان بزاريد
خودش ازتون سؤال مي‌كنه كه انديسي كنه يا نه