Тема: Пользовательская форма из отчета на заднем плане

Создал форму с 2мя календарями для запроса периода (Введите период формирования отчета).
Поместил форму в BASIC модули шаблона отчета.
Из отчета в implement вызываю эту форму и она отображается за всеми окнами, хотя форма модальная.
Как модальное окно на передний план переместить?

Re: Пользовательская форма из отчета на заднем плане

Самое простое, чтобы не думать, сделать форме стиль StayOnTop (поверх всех окон всегда).  Правда не вижу как его сделать на VBA. Посмотрите, у нас пример формы есть вроде в демо базе старой.

Ну а так по-хорошему лучше на новый репортер переходить конечно.

Re: Пользовательская форма из отчета на заднем плане

Решил проблему, если кому то понадобится, то создайте BAS модуль с текстом

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Boolean
'<doc Находит окно в Windows по заголовку и перемещает его наверх
'<par as String Загогловок окна>
'<type Boolean> >
function SetWindowOnTop(Caption)
Dim hW As Long
Dim hB As Boolean
   hW = 0
   hB = False
   hW = FindWindow(vbNullString, Caption)
   if hW <> 0 then hB = SetWindowPos(hW, -1, 0, 0, 0, 0, 3)
   SetWindowOnTop = hB
end function

Добавьте этот BAS модуль в шаблон отчетов. В пользовательской форме отчета в процедуре UserForm_Initialize() вызовите функцию SetWindowOnTop, которая через api найдет форму по заголовку окна и сменит позицию на top

Private Sub UserForm_Initialize()
   SetWindowOnTop (PeriodForm.Caption)
End Sub

в моем примере имя пользовательской формы PeriodForm