2015-05-26 2 views
1

Я хочу реализовать пользовательский интерфейс поиска в режиме модальной формы и открыть его из разных форм. После того, как модальная форма закрыта, модальная форма передает идентификатор выбранной записи обратно в форму вызова.Позвонить Модальные окна и вернуться в исходные окна

Для exmaple, у меня будет контакт клиента Модальная форма. Он может быть открыт по заказу клиента, котировке, счету или форме AR (форму вызова), когда пользователь хочет найти имя клиента. После того, как поиск будет выполнен, модальная форма передаст выбранный идентификатор клиента обратно в вызывающую форму, а форму для вызова может использовать выбранный клиент для выполнения задач.

Я попытался использовать getfocus в вызывающей форме. Но это не работает, так как фокус не запускается, если вызывающая форма имеет объект.

Как я могу получить контроль и получить пройденный ID из модальной формы после того, как модальная форма закрыта?

ответ

1

В каждой из вызывающих форм вы объявляете переменную объекта формы WithEvents. Если ваш поиск запущен, вы открываете форму поиска, устанавливаете переменную в открытую форму и подключаете событие закрытия.

В обработчике -объекте Close -Event вы можете обработать значение, являющееся результатом взаимодействия пользователя в форме поиска.

Форма поиска должна иметь значение PopUp -Property для True.

код в виде вызова:

' general declarations area 
Private WithEvents frmSearch As Form 

Private Sub cmdSearch_Click() 

    Const FORM_NAME As String = "frmSearch" 

    DoCmd.OpenForm FORM_NAME, acNormal 
    Set frmSearch = Forms(FORM_NAME) 
    frmSearch.OnClose = "[Event Procedure]" 

End Sub 

Private Sub frmSearch_Close() 
    ' process the result here, 
    ' assuming result is in control txtSearchResult 
    MsgBox frmSearch.txtSearchResult.Value 
End Sub 

Это решение основано на предположении, что пользователь закрывает форму поиска, когда он сделан с поиском. Если это не так, вы можете определить свое собственное событие в форме поиска и обработать это вместо этого.

+0

спасибо. Я никогда не использую WithEvnets. С вашим ответом я просматриваю некоторые другие веб-сайты, WithEvents - действительно хорошая функция. Вопрос: для frmSearch.OnClose = "[Event Procedure]", если "[Event Procedure]" be "[frmSearch_Close]"? – YellowLarry

+0

Я выясняю это. Скопируйте весь свой код в форму вызова, не изменяя ничего. Он работает правильно. Поблагодарите yo agian за вашу помощь. – YellowLarry

+0

Решение идеально подходит для установки формы формы формы из основной формы. Как установить событие управления подчиненной формы из основной формы и функции события в основном модуле формы? – YellowLarry

Смежные вопросы