Forms

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

Forms

Сообщение Mao » 29.10.2004 (Пт) 14:42

Подскажите в чем трабл, когда хочу вытащит Tag формы(Forms("Форма1").tag) компилятор выдает что такой формы нет, а она на самом деле есть?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 29.10.2004 (Пт) 16:16

А потому что Forms возвращает только по индексу числовому а не по имени. Пиши функцию, кторая вернет тебе индекс формы по ее имени. То есть что то типа:

Код: Выделить всё

private function formindex(name as string) as long
dim i as long
for i = 1 to forms.count
if forms(i).name=name then
formindex=i
exit for
end if
next i
formindex = -1
end function

....

myvar = forms(formindex("форма1")).tag
I don't understand. Sorry.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 29.10.2004 (Пт) 18:18

RayShade, Forms - это коллекция, поэтому цикл For Each... Next будет быстрее.

Mao
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 95
Зарегистрирован: 10.10.2004 (Вс) 13:09

Сообщение Mao » 29.10.2004 (Пт) 18:20

Дык, по мойму одинаково.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 29.10.2004 (Пт) 18:24

Ты еще не понял? Поиск нужной формы производится по ее индексу в этой коллекции, а свойство Name ясен пень у нее есть. Другой вопрос, что оно (это свойство) неуникальное, и поэтому не может быть ключом. Кстати, интересно было бы раскопать, из чего строится ключ этой коллекции - уж не из hWnd ли? :)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.10.2004 (Вс) 17:59

Все вы не правы :)

Дело просто в том, что Forms содержит только формы, загруженные в данный момент, а не все объявленные в проекте.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 31.10.2004 (Вс) 20:47

GSerg писал(а):Все вы не правы :)

Дело просто в том, что Forms содержит только формы, загруженные в данный момент, а не все объявленные в проекте.

Эээ. А что, кто-то думал иначе???

VB Object Browser писал(а):Property Forms As object
read-only
Member of VB.Global
All loaded forms in an application.

Mao
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 95
Зарегистрирован: 10.10.2004 (Вс) 13:09

Сообщение Mao » 01.11.2004 (Пн) 11:28

Тогда такой вопрос, меняется ли индекс форм от порядка открытия этих форм??

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 01.11.2004 (Пн) 11:55

Mao писал(а):Тогда такой вопрос, меняется ли индекс форм от порядка открытия этих форм??

Да. Единственный вариант найти нужную форму - искать в цикле по совпадению .Name...


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

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

Сейчас этот форум просматривают: AhrefsBot, Google-бот, Yandex-бот и гости: 5

    TopList