Список форумов Акцент Акцент
официальный форум разработчика программы Акцент
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Диалог форм )

 
Начать новую тему   Ответить на тему    Список форумов Акцент -> Акцент 7.0
Предыдущая тема :: Следующая тема  
Автор Сообщение
Руслан



Зарегистрирован: 20.06.2014
Сообщения: 40

СообщениеДобавлено: Вт Авг 08, 2017 11:57 am    Заголовок сообщения: Диалог форм ) Ответить с цитатой

Добрый день.
Постановка задачи примерно такая. Есть форма А и Б. изначально запускается форма А. В процессе ее работы при определенных условиях вызывается форма Б. В нее передаются параметры. На форме Б пользователь выполняет некоторые действия и закрывает форму. При закрытии форма Б должна вернуть форме А определенное значение.
Ну с передачами параметров между формами я вроде разобрался (через workarea.map). но не могу разобраться, как показать форме Б, кто именно ее вызвал. т.е. мне надо передать в форму Б не только переменные, но и ссылку на форму А. А вот где ее взять, не могу найти...
Понимаю, что данную задачу проще решить диалогом(вместо формы Б). Но хотелось бы именно формой
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Юров Ю.С.



Зарегистрирован: 11.03.2005
Сообщения: 383
Откуда: Павлоград

СообщениеДобавлено: Ср Авг 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


Ну или принудительно закрывать своё творение аналогичным способом при закрытии основной формы.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Руслан



Зарегистрирован: 20.06.2014
Сообщения: 40

СообщениеДобавлено: Ср Авг 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


Ну или принудительно закрывать своё творение аналогичным способом при закрытии основной формы.


Спасибо, нашел, что искал
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Акцент -> Акцент 7.0 Часовой пояс: GMT + 2
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group