Как вызвать процедуру одной формы из другой формы?
мадама
Дата: 07.06.2004 19:48:59
не бейте больно при этом...

Допустим есть 2 формы Form1 and Form2.
Как вызвать процедуру скажем abc формы Form1 из Form2 ? Не предлагать её сделать public, нехорошо в данном случае. Это маленький кусочек другой большой проблемы. Продолжаю переводить VB-шную форму на VBA. Мучаюсь.
Спасибо за внимание.
Rivkin Dmitry
Дата: 07.06.2004 19:59:04
Именно public но на самой форме, чтобы всем была видна, когда форма загружена. Не вижу причин, почему это не хорошо.
Все другое - это шаманство, как выражается один из спецов:
например, посадить эту процедуру на невидимую, с нулевыми размерами кнопочку и, при необходимости, перевести на нее фокус и дать
SendKeys "{Enter}". Но такие трюки как правило глючат...
мадама
Дата: 07.06.2004 20:08:43
"Именно public но на самой форме"
К сожалению - невозможно. Она тогда невидима для другой формы. Только в модуле её видно из всех форм. А так хоть объявляй её public, хоть нет - один чёрт.
Rivkin Dmitry
Дата: 07.06.2004 20:24:29
Не понял! Как это не видна? public процедура формы, если она, конечно, запущена (форма) видна всем! Ну, а если не запущена, то не на что и ссылаться! Тогда процедуру надо делать в модуле и тоже public.
Или я вопрос не понял, но тогда, плз, по-подробнее, что за проблема
мадама
Дата: 07.06.2004 21:21:51
Неа, не надо public. И так работает:
где ClickPart2 и есть моя процедура.
Спасибо Дмитрий.
Владимир Саныч
Дата: 07.06.2004 22:50:48
Видимо, если не сказано Private, то по умолчанию это работает как Public.
Serge Gavrilov
Дата: 07.06.2004 23:06:02
| | автор |
| | Ну, а если не запущена, то не на что и ссылаться! |
Ну почему? Можно вызвать form_form1.abc, при этом форма form1 может быть не загружена.
Владимир Саныч
Дата: 07.06.2004 23:22:12
Правда, форма при этом загрузится.
Serge Gavrilov
Дата: 07.06.2004 23:26:41
| | автор |
| | Правда, форма при этом загрузится. |
Но грузится она скрыто
Владимир Саныч
Дата: 07.06.2004 23:30:47
Но если у нее в OnOpen/OnLoad есть программный код, то он исполнится.