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


Автор: VirusE 26.5.2005, 09:48
Есть несколько групп элементов, имена их отличаются последней цифрой
например:
группа i
ai, bi, ci
группа 2
aj, bj, cj
группа 3
ak, bk, ck
в реале количество групп и их состав больше (8 групп по 16 элементов).
данные от элементов формы нужно занести в таблицу
можно ли задать цикл
например:

from x=1 to k
cells(n,(c*(x-1)+1)=ax
cells(n,(c*(x-1)+2)=bx
cells(n,(c*(x-1)+3)=cx
next

в принципе загвоздка состоит в том, как задать имя элемента формы в цикле
в каждом цикле текстовая часть постоянна, а цифра меняется.

Автор: ChofCh 26.5.2005, 10:10
Есть такая полезная вещь, как массив элементов управления. Бросаешь на форму, к примеру, текстовое поле Text1, и потом приписываешь ему какое-нибудь свойство Index. IDE автоматически предлагает создать массив эл. управления, если скопировать контрол, а потом вставить его на ту же форму.

Автор: Akina 26.5.2005, 10:18
Цитата(ChofCh @ 26.5.2005, 11:10)
и потом приписываешь ему какое-нибудь свойство Index

У контрола есть свойство "Index" изначально. Просто оно не имеет значения по причине отсутствия управляющего массива. Если ему вручную задать значение (скажем ноль) - IDE тут же предложит создать управляющий массив.

Примечания:
1) Управляющий массив - всегда одномерный. При наличии нескольких групп контролов у каждой группы будет свой массив.
2) Значения его - динамические, начиная с нуля.
3) Созданный для контрола управляющий массив удалить нельзя - придется удалить все контролы этого массива и создать их заново.

Автор: Naghual 26.5.2005, 10:19
Цитата
cells(n,(c*(x-1)+1)=ax
Так ты это про эксель?
Тогда как понимать фразу
Цитата
имя элемента формы
?

Поясни

Автор: VirusE 26.5.2005, 11:00
в редакторе создается форма, которая в экселе появляется при нажатии соответствующей клавиши
в форму введены элементы: Рage, Lable, TextBoxs, ComboBox и тп.
каждый элемент имеет свое имя (по умолчанию название элемента и номер),
у меня несколько идеентичных Page (вкладка) их названия отличаются (Caption), а имена (name) отличаются лишь номером, на каждой странице одинаковый набор элементов, отличие имен в цифре в конце
например

Page_1(name), Даты 1(cafption) - page
на вкладке
data_a_1(name) - TextBox
data_b_1(name) - TextBox
data_c_1(name) - TextBox
data_d_1(name) - TextBox
nal_1(name) - CheckBox

Page_2(name), Даты 2(cafption) - page
на вкладке
data_a_2(name) - TextBox
data_b_2(name) - TextBox
data_c_2(name) - TextBox
data_d_2(name) - TextBox
nal_2(name) - CheckBox

и так далее
Добавлено @ 11:06
ai,bi,.....ck - значения элементов
например a1=data_a_1.Value

Автор: Naghual 26.5.2005, 11:29
Тогда тебе таки проще будет переделать все под массив элементов и обращатся к ним через индексы.

Автор: VirusE 26.5.2005, 12:00
да ладно уже все сделал, только макрос длиннющий получился (хотел сократить за счет цикла), а пределывать времени нет

Автор: Mephisto 27.5.2005, 06:17
Вот прикольный примерчик, можешь пограть с ним.
Есть еще прикольная функция TypeOf
Код
    If TypeOf MyControl Is CheckBox Then

Вот соб-сна пример:
Код
    Dim TT as Control

    For Each TT in Controls
        TT.Visible=False
    Next

smile smile smile

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