Добавлено: Вт Авг 08, 2017 11:57 am Заголовок сообщения: Диалог форм )
Добрый день.
Постановка задачи примерно такая. Есть форма А и Б. изначально запускается форма А. В процессе ее работы при определенных условиях вызывается форма Б. В нее передаются параметры. На форме Б пользователь выполняет некоторые действия и закрывает форму. При закрытии форма Б должна вернуть форме А определенное значение.
Ну с передачами параметров между формами я вроде разобрался (через workarea.map). но не могу разобраться, как показать форме Б, кто именно ее вызвал. т.е. мне надо передать в форму Б не только переменные, но и ссылку на форму А. А вот где ее взять, не могу найти...
Понимаю, что данную задачу проще решить диалогом(вместо формы Б). Но хотелось бы именно формой
Добавлено: Ср Авг 09, 2017 3:40 am Заголовок сообщения: Re: Диалог форм )
Руслан писал(а):
Понимаю, что данную задачу проще решить диалогом(вместо формы Б). Но хотелось бы именно формой
Если стоит задача немодального диалога в виде формы,
ну и передавай, вместе со всем остальным (или вместо всего остального),
ссылку на форму А (Set map.Item("frm")=Form).
При этом надо не дать форме А закрыться раньше формы Б, только и всего.
Код:
Dim LockForCloseForm
Sub btn__OnClick
Dim frm : Set frm=app.CreateForm("Form1.afm")
If frm Is Nothing Then Exit Sub ' прописана правильно, а файла формы нет.
LockForCloseForm=True
Set frm.Map.Item("frm")=Form
frm.AddScriptFragment "Form.Caption=""Форма Б"""
frm.AddScriptFragment "Map.Item(""frm"").Caption=""Форма А"""
frm.Recalc
Form.ReCalc
Dim guid : guid=frm.Guid : Set frm=Nothing : Call app.WaitForCloseForm(guid) : DoEvent
LockForCloseForm=False
End Sub
Sub Form_CanClose(ByRef Cancel) 'False (по умолчанию) разрешает закрытие объекта
If LockForCloseForm Then MsgBox "Сначала нужно закрыть форму Б" : Cancel = True : Exit Sub
....
End Sub
Ну или принудительно закрывать своё творение аналогичным способом при закрытии основной формы.
Добавлено: Ср Авг 09, 2017 9:18 am Заголовок сообщения: Re: Диалог форм )
Юров Ю.С. писал(а):
Руслан писал(а):
Понимаю, что данную задачу проще решить диалогом(вместо формы Б). Но хотелось бы именно формой
Если стоит задача немодального диалога в виде формы,
ну и передавай, вместе со всем остальным (или вместо всего остального),
ссылку на форму А (Set map.Item("frm")=Form).
При этом надо не дать форме А закрыться раньше формы Б, только и всего.
Код:
Dim LockForCloseForm
Sub btn__OnClick
Dim frm : Set frm=app.CreateForm("Form1.afm")
If frm Is Nothing Then Exit Sub ' прописана правильно, а файла формы нет.
LockForCloseForm=True
Set frm.Map.Item("frm")=Form
frm.AddScriptFragment "Form.Caption=""Форма Б"""
frm.AddScriptFragment "Map.Item(""frm"").Caption=""Форма А"""
frm.Recalc
Form.ReCalc
Dim guid : guid=frm.Guid : Set frm=Nothing : Call app.WaitForCloseForm(guid) : DoEvent
LockForCloseForm=False
End Sub
Sub Form_CanClose(ByRef Cancel) 'False (по умолчанию) разрешает закрытие объекта
If LockForCloseForm Then MsgBox "Сначала нужно закрыть форму Б" : Cancel = True : Exit Sub
....
End Sub
Ну или принудительно закрывать своё творение аналогичным способом при закрытии основной формы.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах