Вызов функции из формы

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

Вызов функции из формы

Сообщение Rouch » 31.07.2006 (Пн) 17:09

Представим, что у меня есть форма Form1 в которой я хочу вызвать некоторую открытую функцию из формы Form2. При этом функция должна принять параметры и возвратить некоторое значение. Если мне нужно отобразить эту форму я могу вставить метод Show еще до вызова функции или сделать это в теле самой функции.
Вопрос в том, как мне отобразить форму Form2 модально?
Ясно, что если я сделаю это до вызова функции, то работа самой функции начнется только после того, как форма будет закрыта. Если сделаю это в теле самой функции, то работа функции будет отсановлена!
Как быть? Есть у кого-нибудь светлые мысли на этот счет?
Be all that you want be.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 31.07.2006 (Пн) 17:55

Мысль такова:

в коде Формы1.

Код: Выделить всё
Form2.Tag="CallSpecFunc"
Form2.Show vbModal, , Me


в коде формы 2 в событии Form_Activate -
Код: Выделить всё
If Me.Tag="CallSpecFunc"
вот тут вызов твоей хитроумноый функции.
Me.Tag = ""
End If
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Rouch
Новичок
Новичок
Аватара пользователя
 
Сообщения: 41
Зарегистрирован: 30.07.2004 (Пт) 7:26
Откуда: Немного отовсюду

Сообщение Rouch » 31.07.2006 (Пн) 18:02

Ты прав, но это только в том случае, если мне просто надо выполнить код. А как вернуть в форму Form1 результат выполнения функции? Или ты предлагаешь его тоже засовывать в TAG?
Be all that you want be.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 31.07.2006 (Пн) 18:12

А функция должна вернуть значение, до или после показа формы?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

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

Re: Вызов функции из формы

Сообщение tyomitch » 31.07.2006 (Пн) 19:04

Rouch писал(а):Ясно, что если я сделаю это до вызова функции, то работа самой функции начнется только после того, как форма будет закрыта. Если сделаю это в теле самой функции, то работа функции будет отсановлена!

Таймер?
Изображение

Rouch
Новичок
Новичок
Аватара пользователя
 
Сообщения: 41
Зарегистрирован: 30.07.2004 (Пт) 7:26
Откуда: Немного отовсюду

Сообщение Rouch » 31.07.2006 (Пн) 19:23

Хакер писал(а):А функция должна вернуть значение, до или после показа формы?

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

Есть решение через таймер, но хочется сделать по-человечески: Функции передаются параметры, она отрабатывает код с показом формы и возвращает значение.
Be all that you want be.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 31.07.2006 (Пн) 19:51

Ну например так : заводишь переменные уровня формы для передачи параметров и результата. Вызываешь в модальной форме метод Me.Хлеба_и_зрелищ, в событии Form_Activate вся твоя функция и в конце Unload Me.
Вложения
Функция в форме.rar
(1.79 Кб) Скачиваний: 56
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

Rouch
Новичок
Новичок
Аватара пользователя
 
Сообщения: 41
Зарегистрирован: 30.07.2004 (Пт) 7:26
Откуда: Немного отовсюду

Сообщение Rouch » 31.07.2006 (Пн) 20:00

Спасибо. Да, только хочется функцию использовать. На то она и функция, чтобы принимать параметры и возвращать значение. А шарить переменные не очень хочется, особенно если пишется отдельный модуль (форма), который может быть использован где угодно и кем угодно.
Может из API есть что-нить, что может сделать форму модальной и при этом вернет управление сразу же не дожидаясь закрытия этой формы. Некий аналог Me.Show vbModal - но без ожидания?
Be all that you want be.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 31.07.2006 (Пн) 20:02

Rouch писал(а):Да, только хочется функцию использовать. На то она и функция, чтобы принимать параметры и возвращать значение.
ты прикрепленный файл значит не смотрел? Параметры передаются в функцию и она возвращает значение ...
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

Rouch
Новичок
Новичок
Аватара пользователя
 
Сообщения: 41
Зарегистрирован: 30.07.2004 (Пт) 7:26
Откуда: Немного отовсюду

Сообщение Rouch » 31.07.2006 (Пн) 20:29

OK. Фокус понял.
Be all that you want be.


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 58

    TopList