Все дело в том, что один элемент массива
элементов управления потребляет меньше
ресурсов, чем такой же, но обособленный. Т.е.
отдельно три TextBox потребляют ресурсов больше, чем
три TextBox в массиве. Как же их различать? -
спросите вы. Как и у любого массива, у массивов
элементов управления все элементы массива имеют
сои индексы. Можно их различать по индексу.
Например нам нужно добавить в три текстовых поля
(TextBox) три разных строки текста. Можно так:
TextBox(0).Text="бла-бла-бла"
TextBox(1).Text="блу-блу-блу"
TextBox(2).Text="ля-ля-ля"
Но можно несколько упростить это для
восприятия, записав в свойство Tag каждого
текстового поля дополнительную информацию. Надо
заметить, что свойство Tаg есть практически у всех
контролов и служит оно для заметок. Вот и
используем его. Запишем в нулевое текстовое поле
в сво-во Tag="Inbox", далее TextPath(1).Tag="Outbox",
третье - ProgramPath, четвертое - ServerPOP3... и т.д. Беру
пример из готового проекта Почтовый
робот - в нем вы сможете изучить этот прием в
работе. Итак - записали. Теперь будем считывать
данные из ini-файла и записывать их в соответ-
ствующие текстовые поля: (подробнее об ini-файлах здесь)
'Объявляем цикл от нижней
граници массива до верхней
For I = txtPath.LBound To
txtPath.UBound
'Считываем данные из соответствующего ключа,
который имеет имя равное св-ву Tag соотв. поля
txtPath.Item(I).Text = sGetINI(App.Path &
"\settings.ini", _
"Global", txtPath.Item(I).Tag, "none")
'А потом смотрим чему у нас равно поле Tag текужего
контрола
Select Case txtPath.Item(I).Tag
Case "Login"
Login = txtPath.Item(I).Text
Case "Password"
Password = txtPath.Item(I).Text
Case "PortPOP3"
Port = Val(txtPath.Item(I).Text)
Case "ServerPOP3"
Host = txtPath.Item(I).Text
Case "Inbox"
Inbox = txtPath.Item(I).Text
Case "E-MailAdress"
EMail = txtPath.Item(I).Text
End Select
Next I
Просто? Проще некуда. Представте, что для
экономии ресурсов вам бы пришлось возиться с
индексами и помнить еще в процессе разработки
какому индексу какое текстовое поле
соответствует. А теперь я вас еще порадую.
Представте, что появилась необходимость
добавить новое текстовое поле, которое будет
содержать путь к некоей программе. Нет ничего
проще! Добавляем в массив текстовое поле.
Записываем ему в Tag=ProgramPath и в вышеприведенный
цикл вставляем всего две строчки!
Case "ProgramPath"
ProgramPath = txtPath.Item(I).Text
Все. Новое поле добавлено и настройки
для него загружаются. Еще проще с сохранением
настроек - там вообще всего один цикл, который и
не нужно менять при добавлении/удалении
текстовых полей:
For I = txtPath.LBound To txtPath.UBound
writeINI App.Path & "\settings.ini",
"Global", _
txtPath.Item(I).Tag, txtPath.Item(I).Text
Next I