Страница: 1 |
Страница: 1 |
Вопрос: Открытие формы по имени в строковой переменной
Добавлено: 21.03.05 20:42
Автор вопроса: grix
Можно ли открыть форму по имени, которое хранится в строковой переменной?
Что-нибудь типа: s = "Form1"
Forms(s).Show
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #1
Добавлено: 21.03.05 21:15
Нет, к массиву классов нужно обращаться по другому. В данном случае ты обращаешся к числовому массиву и в скобках может быть только индекс формы в массиве форм.
Номер ответа: 2
Автор ответа:
grix
Вопросов: 3
Ответов: 5
Профиль | | #2
Добавлено: 21.03.05 21:18
И как это можно сделать?
Номер ответа: 3
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #3
Добавлено: 21.03.05 21:22
Из MSDN:
...
You can use the Forms collection to iterate through all loaded forms in an application. It identifies an intrinsic global variable named Forms. You can pass Forms(index) to a function. whose argument is specified as a Forms class.
Из этого следует, что если бы и был способ запихнуть в скобки имя формы (а его нет!), то всё равно он бы работал только для загруженной формы. Стало быть - облом.
ЗЫ: ну из add-in'а можно, конечно, обратиться к незагруженной форме по имени (за счёт библиотеки VB IDE Extensibility; устроив перебор) - но толку-то от этого!
Номер ответа: 4
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #4
Добавлено: 21.03.05 21:27
Grix, а на фига может потребоваться такое? обращаться к форме по имени?! даже представить себе не могу...
Номер ответа: 5
Автор ответа:
grix
Вопросов: 3
Ответов: 5
Профиль | | #5
Добавлено: 21.03.05 21:37
Comanche, В массиве есть список имен форм, чтобы не делать Select Case или If, а вызывать форму по имени в элементе массива
Номер ответа: 6
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #6
Добавлено: 21.03.05 21:44
For Each Object In Form ?
Номер ответа: 7
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #7
Добавлено: 21.03.05 21:47
В общем-то что-то подобное уже обсуждалось и ничего окромя вызова VB'шного кода с пом. какой-то функции экспортируемой из VBA6.DLL, не нашли...
Номер ответа: 8
Автор ответа:
grix
Вопросов: 3
Ответов: 5
Профиль | | #8
Добавлено: 21.03.05 21:48
Так не работает. В Forms хранятся только загруженные формы, а если надо открыть еще незагруженную?
Номер ответа: 9
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #9
Добавлено: 21.03.05 21:55
к массиву классов нужно обращаться по другому
Конечно же не к массиву, а к колекции.
У меня на сайте есть пример как обращаться к контролоам с помощью перебора коллекции. По аналогии можно сделать и для форм.
Номер ответа: 10
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #10
Добавлено: 21.03.05 21:57
Вот два примера. К сожалению они все ориентированы на контролы. Так что для форм уж сам как нибудь.
http://basicproduction.nm.ru/LblCstm.zip
http://basicproduction.nm.ru/Resize.rar
PS: Качать через браузер.
Номер ответа: 11
Автор ответа:
grix
Вопросов: 3
Ответов: 5
Профиль | | #11
Добавлено: 21.03.05 22:14
Контролы это немного не то.
Номер ответа: 12
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #12
Добавлено: 22.03.05 04:03
Не спорю
"Немного не то" - это всё же не "совсем не то".