Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с двумя формами (заморозка неактивного окна) / 14 сообщений из 14, страница 1 из 1
29.03.2011, 18:09
    #37188581
DarkKifir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с двумя формами (заморозка неактивного окна)
Здравствуйте, пишу на VB 6.0 professional. С толкнулся с проблемой работы с двумя окнами (формами). Проблема заключена в том, что при вызове второго окна (form2.show) первая форма (она же главная) продолжает свою работу. Вторая форма имеет в себе 5 textbox из которых необходимо перенести данные в структуру (структура в модуле с публичной меткой). Т.к. у меня несколько записей в структуре (массив структур), мне необходимо произвести остановку работы первого окна, до того как во втором окне не выполниться событие (OkButtonClick), не хватает мозгов чтобы это реализовать. Если кто знает что делать, подскажите, и желательно поподробнее, т.к. я новичёк и ещё слабо разбираюсь в vb. Спасибо за внимание.

Это первое окно из которого вызывается второе.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 
Sub inpt_customers()
' задаём список, который будем обрабатывать в дальнейшем

Do  'заносим количество записей в струтуру, т.е. количество торговцев
n = CInt(InputBox("Введите количество записей:", "Ввод торговцев",  1 ))
Loop Until n >  0 
ReDim SC( 1  To n)

For i =  1  To n 
Load Dialog: Dialog.Show ' вызывает окно dialog
Main_form.Enabled = False
' !необходима остановка выполнения кода в этом окне,
' !пока не выполнится действие в другой окне

Next i

End Sub

Это второе окно, в котором как раз и заносятся данные.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 
Private Sub OKButton_Click()
If D_BN_O = True Then
                        SC(i).MS = CByte(MSbox.Text)
                        SC(i).AB = CInt(ABbox.Text)
                        SC(i).AC = CInt(ACbox.Text)
                        SC(i).NI = CStr(NIbox.Text)
                        SC(i).SB = CInt(SBbox.Text)
       End If
Unload Me
Обе формы связанны между собой модулем.
Основные переменные, типа i и n в глобале. Пробовал пустой цикл с пост условием: вешает программу.
...
Рейтинг: 0 / 0
29.03.2011, 18:12
    #37188590
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с двумя формами (заморозка неактивного окна)
1) вызвать вторую форму как модальную (параметр у Show)

2) прекратить выполнение процедуры в первой форме после вызова второй формы. После окончания работы второй формы, она должна вызвать какой-то публичный метод первой формы, которая продолжит нужные действия первой формы
...
Рейтинг: 0 / 0
29.03.2011, 18:19
    #37188609
DarkKifir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с двумя формами (заморозка неактивного окна)
А по подробнее можно, а то я чего не очень понял. Т.е. перенести выполнение события в модуль, и с помощью, например GoTo, после окончания выполнения события переместиться в первую форму?
...
Рейтинг: 0 / 0
29.03.2011, 18:22
    #37188620
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с двумя формами (заморозка неактивного окна)
DarkKifirА по подробнее можно, а то я чего не очень понял. Т.е. перенести выполнение события в модуль, и с помощью, например GoTo, после окончания выполнения события переместиться в первую форму?

Код: plaintext
Dialog.Show True
вас устраивает?
...
Рейтинг: 0 / 0
29.03.2011, 18:30
    #37188646
DarkKifir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с двумя формами (заморозка неактивного окна)
Пишет, что "Invalid procedure call or argument", на "Dialog.show true". Можете объяснить, с чем это связано?
...
Рейтинг: 0 / 0
29.03.2011, 18:41
    #37188681
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с двумя формами (заморозка неактивного окна)
DarkKifirПишет, что "Invalid procedure call or argument", на "Dialog.show true". Можете объяснить, с чем это связано?
то есть без True все нормально вызывает, а как только приписываете True - сразу ошибка?
...
Рейтинг: 0 / 0
29.03.2011, 18:43
    #37188689
DarkKifir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с двумя формами (заморозка неактивного окна)
Shocker.Pro,

да
...
Рейтинг: 0 / 0
29.03.2011, 18:46
    #37188702
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с двумя формами (заморозка неактивного окна)
DarkKifir,

Непонятно
Выложите проект
...
Рейтинг: 0 / 0
29.03.2011, 18:47
    #37188706
DarkKifir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с двумя формами (заморозка неактивного окна)
Приложил проект
...
Рейтинг: 0 / 0
29.03.2011, 18:48
    #37188712
DarkKifir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с двумя формами (заморозка неактивного окна)
Буду очень признателен, если поправите этот кусок, чтобы он нормально работал...
...
Рейтинг: 0 / 0
29.03.2011, 18:52
    #37188720
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с двумя формами (заморозка неактивного окна)
Сорри, надо было:
Код: plaintext
Dialog.Show  1 
не люблю модальные формы
...
Рейтинг: 0 / 0
29.03.2011, 19:02
    #37188748
DarkKifir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с двумя формами (заморозка неактивного окна)
Спасибо большое за подсказку) буду дальше делать) И ещё 1 вопрос на последок: в конце события OkButtomClick хочу активировать главное окно, т.к. я использовал Main_form.Enabled = False, я вот вычитал про команду, которая после выхода из приложения выполняет некоторую операцию, вроде называется terminate, но не уверен. Как с помощью этой операции мне вызвать другое окно. Можете строчку написать, а куда воткнуть её я найду )
...
Рейтинг: 0 / 0
29.03.2011, 19:05
    #37188758
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с двумя формами (заморозка неактивного окна)
DarkKifirСпасибо большое за подсказку) буду дальше делать) И ещё 1 вопрос на последок: в конце события OkButtomClick хочу активировать главное окно, т.к. я использовал Main_form.Enabled = False, я вот вычитал про команду, которая после выхода из приложения выполняет некоторую операцию, вроде называется terminate, но не уверен. Как с помощью этой операции мне вызвать другое окно. Можете строчку написать, а куда воткнуть её я найду )

Если будете использовать то, что я предложил, то вам не нужна строка Main_form.Enabled = False вообще.

Что касается события на выгрузку формы - используйте Form_Unload
...
Рейтинг: 0 / 0
29.03.2011, 19:09
    #37188765
DarkKifir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с двумя формами (заморозка неактивного окна)
Огромное спасибо за консультацию, она мне очень помогла... без этой строки и вправду лучше)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с двумя формами (заморозка неактивного окна) / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]