Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Открытие формы по имени в строковой переменной Добавлено: 21.03.05 20:42  

Автор вопроса:  grix
Можно ли открыть форму по имени, которое хранится в строковой переменной?
Что-нибудь типа: s = "Form1"
Forms(s).Show

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #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:

A Formscollection is a collection whose elements represent each loaded form in an application.

...

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-сайт: hw.t-k.ru
 Профиль | | #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-сайт: basicproduction.nm.ru
 Профиль | | #9
Добавлено: 21.03.05 21:55

к массиву классов нужно обращаться по другому

Конечно же не к массиву, а к колекции.
У меня на сайте есть пример как обращаться к контролоам с помощью перебора коллекции. По аналогии можно сделать и для форм.

Ответить

Номер ответа: 10
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #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-сайт: basicproduction.nm.ru
 Профиль | | #12
Добавлено: 22.03.05 04:03
Не спорю :)
"Немного не то" - это всё же не "совсем не то".

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам