Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обращение к контролу по имени, Быстрое обращение к контролу. 
V
    Опции темы
mihanik
  Дата 26.6.2006, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Привет!

Решаю сейчас такую задачу:
На форме у меня разбросана туева хуча контролов (текстбоксты, лэйблы и т.п.)
При запуске программы каждому контролу нужно придать какое-то значение.
Все значения контролов у меня лежат сначала в конфигурационном файле.
При загрузке формы я этот файл считываю в память в динамический массив.
Затем перебираю все контролы и присваиваю им значения примерно так (для текстбоксов)...

Код

Public Sub SetControls()
Dim MyControls As Control
Dim I As Integer
Dim N As Integer

    N = UBound(strSetings, 2)

    For Each MyControls In frmMain
        For I = 1 To N
            If MyControls.Name = strSettings(1, I) Then MyControls.Text = strSettings(3, I)
        Next I
    Next MyControls
End Sub


Хочу сделать примерно так

Код

для I  от 1 до UBound(массив, 2)
       текст(или каптион) контрола с именем взятым из массив(1, I)  = массив (3, I)
следующий I


Работать должно быстрее, т.к. не надо перебирать все контролы и проверять их имена.
Но не знаю как так сделать...
Есть идеи?
 


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
boevik
Дата 27.6.2006, 07:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Сделай наооборот.
Все значения из файла загони в коллекцию.
Ключ в коллекции это имя контроля:
Код

Public Sub SetControls()
Dim MyControls As Control

    For Each MyControls In frmMain
        MyControls.Text = col.item(MyControls.Name)
    Next MyControls
End Sub

 


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
mihanik
Дата 27.6.2006, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Спасибо за идею.
Вечером попробую...
 smile  


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Тутанхамец
Дата 28.6.2006, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: 4
Всего: 6



У каждой формы есть коллекция Controls, к элементам которой можно обращаться так: 

Код

Form1.controls("MyLabel").caption="qq"


Я бы хранил в файле типы контролов, имена контролов и нужные значения. Код будет примерно такой:
Код


N=ubound(strSettings)
for i=1 to n
if strsettings(i,1)="CheckBox" or strsettings(i,1)="Label" or ..... then
frmMain.controls(strsettings(i,2)).caption=strsettings(i,3)

else if strsettings(i,1)="TextBox" then frmMain.controls(strsettings(i,2)).text=strsettings(i,3)
next i 


P.S. Приятнее юзать массив пользовательских типов, чем двумерный массив. Не заблудишься в столбцах. 

Код

public type TSetting
Name as string
Value as string
CtrlType as string
end type

dim settings(1 to 10) as TSetting

...

if settings(i).ctrltype="Label" then me.controls(settings(i).name).caption=settings(i).value

  

Это сообщение отредактировал(а) Тутанхамец - 28.6.2006, 17:15
PM MAIL   Вверх
mihanik
Дата 29.6.2006, 07:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Тутанхамец !

Твой способ мне понравился!!!
Спасибо!!! smile 

Обязательно его реализую!!! smile 

Вопрос снят!
Всем спасибо!!!
 


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0421 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.