Динамические имена для динамически созданных ActiveX?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
XPAHuTEJIb
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 71
Зарегистрирован: 12.07.2006 (Ср) 15:04
Откуда: Новый Уренгой

Динамические имена для динамически созданных ActiveX?

Сообщение XPAHuTEJIb » 27.08.2007 (Пн) 8:17

Добрый день.
Возможно ли задавать динамически имя создаваемому динамически ActiveX контролу?
например:
Код: Выделить всё
dim q as string
q="aaa"
dim [значение q] as adodb.recordset

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 27.08.2007 (Пн) 8:49

ADODB.Recordset -- не ActiveX-контрол.
Задавать имя создаваемому динамически ActiveX-контролу можно.
Изображение

XPAHuTEJIb
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 71
Зарегистрирован: 12.07.2006 (Ср) 15:04
Откуда: Новый Уренгой

Сообщение XPAHuTEJIb » 27.08.2007 (Пн) 9:08

Извините, если не так пример привел, просто думал, что ActiveX Data Objects является ActiveX компонентом....
Подскажите пожалуйста, как это сделать?

Сабж:
Есть таблица с записями, есть поле ID, необходимо создать компонент, имя которому - значение ID таблицы.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 27.08.2007 (Пн) 9:09

Видимо речь идет об именах переменых. Нет, нельзя.

Можно использовать коллекцию.
Код: Выделить всё
col.Add rs, "Table1"
Set Datagrid1.DataSource = col("Table1")
Лучший способ понять что-то самому — объяснить это другому.

XPAHuTEJIb
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 71
Зарегистрирован: 12.07.2006 (Ср) 15:04
Откуда: Новый Уренгой

Сообщение XPAHuTEJIb » 27.08.2007 (Пн) 9:21

ну да, об именах.
спасибо.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 27.08.2007 (Пн) 9:24

XPAHuTEJIb писал(а):Извините, если не так пример привел, просто думал, что ActiveX Data Objects является ActiveX компонентом....

Не всякий компонент -- контрол.
Изображение

XPAHuTEJIb
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 71
Зарегистрирован: 12.07.2006 (Ср) 15:04
Откуда: Новый Уренгой

Сообщение XPAHuTEJIb » 27.08.2007 (Пн) 9:26

еще вопрос:
а можно задать
Код: Выделить всё
dim s() as myActiveXcontrol
?
т.е. как массив объектов?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 27.08.2007 (Пн) 9:36

Любой контрол можно сделать массивом, проставив ему Index. И объявлять его при этом не нужно.

Но можно и объявить массив. Тогда придется вручную присваивать каждый элемент.
Лучший способ понять что-то самому — объяснить это другому.

XPAHuTEJIb
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 71
Зарегистрирован: 12.07.2006 (Ср) 15:04
Откуда: Новый Уренгой

Сообщение XPAHuTEJIb » 27.08.2007 (Пн) 9:51

приблизительно так?
Код: Выделить всё
Dim v() As VIP.VIP
redim v(0)
rs.movefirst
for x=1 to rs.recordcount
v(ubound(v)).senddata rs("mydata")
redim preserve v(ubound(v)+1)
rs.movenext
next
в Reference включил компонент
но, почему то не работает

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 27.08.2007 (Пн) 9:58

Тогда придется вручную присваивать каждый элемент.
Это означает, что после redim v(0) есть массив из одного элемента, имеющего значение Nothing. Nothing не может сделать senddata. Нужно как минимум что-то вроде Set v(0) = New VIP.VIP
Лучший способ понять что-то самому — объяснить это другому.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Majestic-12 [Bot] и гости: 47

    TopList