Контролы в массиве
Home Up Автозапись Буфер обмена Долой пробелы DOS-программы Контролы в массиве Редактор VB Скрытые папки INI-файлы Лог-файлы Миминизация Звук в MP3 Советы

Экономия ресурсов с помощью массивов элементов управления

Все дело в том, что один элемент массива элементов управления потребляет меньше ресурсов, чем такой же, но обособленный. Т.е. отдельно три 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

На главную

 

Home ] Up ] О группе ] Статьи ] Исходники ] Орфография ] Проекты ] Наша рассылка ]

Хостинг от uCoz