powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сделать форму всплывающей из VBA
11 сообщений из 11, страница 1 из 1
Сделать форму всплывающей из VBA
    #32567665
Mysoap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, такая проблема: есть форма, которая в различных ситуациях должна быть либо всплывающей, либо нет. Знает ли кто нибудь способ сделать форму всплывающей с помощью кода VB? Изменять значение свойства popup в режиме разработки не подходит - проект должен быть скомпиллирован в .ade.
...
Рейтинг: 0 / 0
Сделать форму всплывающей из VBA
    #32567681
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что значит всплывающей?
Можно поподробне?
...
Рейтинг: 0 / 0
Сделать форму всплывающей из VBA
    #32567711
Mysoap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всплывающая форма должна всегда находиться поверх остальных (невсплывающих). В режиме разработки формы это достигается установкой свойства Popup = Yes (Всплывающее окно = Да). Вопрос в том, как это сделать из кода.
...
Рейтинг: 0 / 0
Сделать форму всплывающей из VBA
    #32567715
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как сделать так чтобы форма была наверху?
...
Рейтинг: 0 / 0
Сделать форму всплывающей из VBA
    #32567843
Mysoap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожалению, вариант с API из указанного топика не работает (не делает форму всплывающей, хотя и выполняется без ошибок), а вариант с .Show вообще не проходит в - ну нет у Access'овских форм метода Show :-(
...
Рейтинг: 0 / 0
Сделать форму всплывающей из VBA
    #32567946
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не проще ли просто дать форме фокус
...
Рейтинг: 0 / 0
Сделать форму всплывающей из VBA
    #32567956
Фотография маяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть способ ещё проще. Не экономить байтики и сделать две одинаковых формы, только одна popup, а другая нет.
...
Рейтинг: 0 / 0
Сделать форму всплывающей из VBA
    #32568017
Mysoap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насчет дать фокус - не подходит, форма вообще не должна скрываться за другими окнами, даже если пользователь переключится, это должен быть некий аналог диалогового окна, но с возможностью масшабирования. Кроме того, мне важно еще такое свойство popup-формы как независимость от состояния других окон, т. е. если остальные формы максимизируются, то popup-окно не подхватывает это автоматом.

А насчет второй формы - да, это вариант, но не очень удобный, ибо данная форма постоянно дорабатывается в соответствии с пожеланиями пользователей (программа в состоянии бета-тестирования), да и не одна она у меня такая... И вообще, давит как-то отсутствие возможности сделать элементарную, вроде бы, вещь, программно.
...
Рейтинг: 0 / 0
Сделать форму всплывающей из VBA
    #32568071
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если очень хочется, то тогда через API:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    Dim lStyle As Long

     ' получаем текущий стиль окна
 
    Style = GetWindowLong(vchWnd, GWL_STYLE)
     ' устанавливаем нужный бит
 
    If bolPopup Then
      lStyle = lStyle Or WS_POPUP
    Else
      lStyle = lStyle And (Not WS_POPUP)
    End If
     ' устанавливаем нужный стиль
 
     lStyle = SetWindowLong(vchWnd, GWL_STYLE, lStyle)
     ' обновляем окно
 
    SetWindowPos vchWnd, _
              0 &,  0 &,  0 &,  0 &,  0 &, _
             SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOZORDER Or _
             SWP_NOACTIVATE Or SWP_NOOWNERZORDER Or SWP_FRAMECHANGED
(переделка моей функции по изменению WS_BORDER)

Вместо vchWnd подставляй hWnd твоей формы. Если не получится, то пишу, но смогу ответить наверное токо в понедельник
...
Рейтинг: 0 / 0
Сделать форму всплывающей из VBA
    #32568072
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очепятка: Style == lStyle
...
Рейтинг: 0 / 0
Сделать форму всплывающей из VBA
    #32568073
а так
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
моделируем, пользуясь тем, что
DoCmd.OpenForm stDocName, , , , , acDialog
приводит к PopUp = True
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private Sub Form_Open(Cancel As Integer)
    Me.Modal = False
End Sub
Private Sub Кнопка10_Click()
On Error GoTo Err_Кнопка10_Click

    Dim stDocName As String

    stDocName = Me.Name
    DoCmd.Close acForm, Me.Name
    DoCmd.OpenForm stDocName, , , , , acDialog
    
Exit_Кнопка10_Click:
    Exit Sub

Err_Кнопка10_Click:
    MsgBox err.Description
    Resume Exit_Кнопка10_Click
    
End Sub

неудобство только в том, что вызывающий (как PopUp) процесс (В данном коде - Private Sub Кнопка10_Click) не завершится до закрытия формы.
+ нельзя так открыть нестандартный экземпляр.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сделать форму всплывающей из VBA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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