Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Возврат результата из формы в процедуру
|
|||
|---|---|---|---|
|
#18+
Архитектурный критинизм... В процессе выполнения процедуры я запускаю некую Form1, в зависимости от того чего там выберет пользователь, я должен присвоить какое-то значение в m_value (см.ниже). Если бы это был простой MsgBox, то я бы написал m_value = MsgBox (ДА/НЕТ). Но у меня так сказать обычная (с рюшечками) форма. Если как у меня Dim m_value объявлено в теле процедуры, то из формы не присвоишь. Могу конечно объявить ее как Public в любом модуле, но с другой стороны, взглянул и забыл, чего ей глобально болтаться по всей программе...непорядок. Как извернуться? (чувствую что что-то простое, но не знаю) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2010, 14:53 |
|
||
|
Возврат результата из формы в процедуру
|
|||
|---|---|---|---|
|
#18+
Дмитрий77, Пока приходит в голову только следующее: Загрузить форму заранее, до Show 1, присвоив ее какой-то переменной WithEvents, после чего выловить событие Unload и считать ее публичную переменную или функцию. Или просто - чтобы форма выдала сама событие из своего Unload. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2010, 16:21 |
|
||
|
Возврат результата из формы в процедуру
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2010, 16:25 |
|
||
|
Возврат результата из формы в процедуру
|
|||
|---|---|---|---|
|
#18+
Antonariy - как всегда краток и точен! *THUMBS UP* ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2010, 16:32 |
|
||
|
Возврат результата из формы в процедуру
|
|||
|---|---|---|---|
|
#18+
Antonariy, Проверяли? Есть проблема. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Если после появления Form1 написать там Text2, то ответ будет таки Text1 а не Text2 (проверил и в vb-среде и с exe). Shocker.ProИли просто - чтобы форма выдала сама событие из своего Unload. Так-то я обычно и поступаю. Но это означает делить код процедуры на 2 части, не есть Good. Тем более что вывода этой формы может и не быть вовсе, а после ее появления(или не появления по условию) у меня напр. достаточно много кода, дублировать код в Unload и в остатке процедуры бы не хотелось, если потом меняешь в одном месте, то в другом частенько забываешь. Shocker.ProЗагрузить форму заранее, до Show 1, присвоив ее какой-то переменной WithEvents, после чего выловить событие Unload и считать ее публичную переменную или функцию.. Это что-то как-то сложно будет. Проще уж тогда в модуле иметь Public m_value и в нее писать значение по Unload. Я это значение прочитаю только по закрытии Form1 и только если форма запускалась, а форма всегда его туда напишет, так что м.б. не париться...раз все так сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2010, 17:52 |
|
||
|
Возврат результата из формы в процедуру
|
|||
|---|---|---|---|
|
#18+
В VBA работает, а в VB6 не хочет. Скорее всего, из-за того что после ввода значений и закрытия формы, она уничтожается, а при получении значения заново загружается с дефолтными значениями. Проверил - Load вызывается два раза, а Initialize - 1 раз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2010, 20:47 |
|
||
|
Возврат результата из формы в процедуру
|
|||
|---|---|---|---|
|
#18+
VSVLADВ VBA работает, а в VB6 не хочет Ну извращаться, так извращаться Текст вызывающей формы Form1 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. вроде работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2010, 21:22 |
|
||
|
Возврат результата из формы в процедуру
|
|||
|---|---|---|---|
|
#18+
Дмитрий77Antonariy, Проверяли? Есть проблема. Даже две. Я о них специально умолчал, чтобы попытались сами решить. 1) VSVLADСкорее всего, из-за того что после ввода значений и закрытия формы, она уничтожается, а при получении значения заново загружается с дефолтными значениями.Это означает, что Unload нужно вызывать только после CreateForm =, а по кнопке подтверждения делать Hide или Visible = False. Или можно объявить локальную переменную, в которую копируется значение при нажатии кнопки, она до Terminate не обнулится. 2) Нужно подавлять закрытие формы через крестик (или вообще отключить крестик), обрабатывая событие Form_QueryUnload, в котором параметр UnloadMode равный 0 означает закрытие крестиком. Или забить, если использовать локальную переменную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2010, 10:14 |
|
||
|
Возврат результата из формы в процедуру
|
|||
|---|---|---|---|
|
#18+
AntonariyЯ о них специально умолчал, чтобы попытались сами решить. Заботливый...но все равно спасибо. Решил. По своему. Дмитрий77Проще уж тогда в модуле иметь Public m_value и в нее писать значение по Unload. Antonariyа по кнопке подтверждения делать Visible = False. и... вообще отключить крестик Да так работает, я проверил. Но в приложение внедрять уже не стал. Как то навороченно все это выглядит, а после всех рассуждений нет особо доверия... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2010, 13:25 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=36808882&tid=2159482]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 140ms |

| 0 / 0 |
