Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Массив из объектов без индексов


Автор: dnr 28.9.2010, 23:04
Возможно ли объеденить группу объектов заданых на форме без индексов например Text1, Text2 и т.д. до Textx в массив и изменить их свойства  к примеру Visible = False, и как вообще можно упростить это:

Код

Text1.Visible = True
Text2.Visible = True
'......
Text10.Visible = True
Text11.Visible = True
Text12.Visible = False
Text13.Visible = False
Text14.Visible = False
Text15.Visible = False

что то типа:
Код

Dim X As Long
For X = 12 To 15
TextX.Visible = False
Next X

но это естественно не работает!! :(___________________________
Код

Option Explicit

Private Sub Command1_Click()
   Dim x As Object
   
For Each x In Me.Controls
    If TypeName(x) = "TextBox" Then

        x.Visible = False
    End If
Next x

End Sub

Это работает но хотелось бы как то выборочно тут же прячет все тексты на форме
Помогите новичкам!!

Автор: admsasha 29.9.2010, 04:22
Можно либо массив необходимых элементов для скрытия завести.

Либо, если учитывать твой пример, добавить

Код

if int(mid(x.name,5))>=12 and int(mid(x.name,5))<=16 then


Если не хочешь индекс, можешь дать им названия и особую нумерацию  (например, text1000, text1001)

Автор: Akina 29.9.2010, 07:50
Читаем справку по коллекции Controls формы - там есть и свойство Type, и свойство Name... 
Читаем справку по термину "Управляющий массив".

Автор: admsasha 29.9.2010, 08:20
Цитата(Akina @  29.9.2010,  14:50 Найти цитируемый пост)
Читаем справку по коллекции Controls формы - там есть и свойство Type, и свойство Name... 
 Ну а я что сказал ? Или это не меня поправил ?

или вы про 
Код

For X = 12 To 15
Controls("text" & X).Visible = False
next X


?

Автор: Akina 29.9.2010, 08:26
Цитата(admsasha @  29.9.2010,  09:20 Найти цитируемый пост)
а я что сказал ? Или это не меня поправил ?

Нет, это топикстартеру

Цитата(admsasha @  29.9.2010,  09:20 Найти цитируемый пост)
или вы про 

ну в том числе и...

Автор: dnr 12.10.2010, 08:43
Код

if int(mid(x.name,5))>=12 and int(mid(x.name,5))<=16 then
 это не догнал, а вот это
    
Код

For X = 12 To 15
Controls("text" & X).Visible = False
next X

подошло спасибо!!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)