powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / немодальная модальная
11 сообщений из 11, страница 1 из 1
немодальная модальная
    #36552337
segail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Немодальную форму, можно сделать модальной кодом.
Например форма1 открыта она немодальная, кликом по кнопке на этой форме мы ее делаем модальной.
...
Рейтинг: 0 / 0
немодальная модальная
    #36552347
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hide
Show vbModal

Иначе никак.

Jah loves you.
...
Рейтинг: 0 / 0
немодальная модальная
    #36552459
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно попробовать псевдомодальность:
Код: plaintext
1.
2.
3.
4.
Private Sub Form_Deactivate()

Me.SetFocus

End Sub
...
Рейтинг: 0 / 0
немодальная модальная
    #36553856
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyHide
Show vbModal

Иначе никак.

Jah loves you.
Всё-таки можно. Хотя, по-моему, Hide:Show vbModal должно хватать на все случаи жизни

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function EnableWindow Lib "user32" _
    (ByVal hwnd As Long, ByVal fEnable As Long) As Long
Private blnModal As Boolean
Private Sub CommandButton1_Click()
blnModal = Not blnModal
EnableWindow FindWindow("XLMAIN", Application.Caption), Abs(CInt(blnModal))
End Sub
Private Sub UserForm_Initialize()
EnableWindow FindWindow("XLMAIN", Application.Caption), Abs(CInt(blnModal))
End Sub
...
Рейтинг: 0 / 0
немодальная модальная
    #36554637
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: vlth

И как этот код меняет модальность окна?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
немодальная модальная
    #36555487
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
> Автор: vlth

И как этот код меняет модальность окна?

Из этого вопроса следует, что не меняет? - такое у меня было только при первичном нажатии на кнопку, и то не всегда (при Modal=False). Т.е. при инициализации формы, возможно, нужно пару раз переключить её модальность.
...
Рейтинг: 0 / 0
немодальная модальная
    #36555799
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: vlth

Похоже мы не поняли друг-друга :)
Перефразирую: Этот код никаким местом не относится к модальности окна, а изменяет только MSDNThe EnableWindow
function enables or disables mouse and keyboard input to the specified window or control. When input is disabled, the
window does not receive input such as mouse clicks and key presses. When input is enabled, the window receives all
input. главного окна Екселя, при этом функцию FindWindow преспокойно заменяет Application.Hwnd и при этом сама
форма должна быть открыта в режиме Modeless. Хотя этот код эмулирует модальность формы и в некоторых случаях
может быть использован, но при использовании есть ньюансы, которые нужно помнить и учитывать. Поэтому мое мнение
остается неизменным: Проще сделать Hide/Show vbModal.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
немодальная модальная
    #36555858
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносПроще сделать Hide/Show vbModal Странно Вы моё сообщение интерпретировали: я ведь то же самое сказал. А код приведён лишь в кач-ве примера.
...
Рейтинг: 0 / 0
немодальная модальная
    #36556154
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбоноспри этом сама
форма должна быть открыта в режиме Modeless Прошу прощения, сразу не обратил внимания: это утверждение, как ни странно, неверно - модальность формы не влияет на работоспособность кода. Проверьте сами.
...
Рейтинг: 0 / 0
немодальная модальная
    #36556366
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: vlth
> Проверьте сами.

Да вы правы, только у меня, видимо руки сильно кривые, забодался ексел перезапускать
---------------------------
Microsoft Visual Basic
---------------------------
Run-time error '-2147417848 (80010108)':

Automation error
Вызванный объект был отключен от клиентов.
---------------------------
ОК Справка
---------------------------



Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
немодальная модальная
    #36556470
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос, не кривые, а умелые

Мне удалось добиться только двух. Первая возникает при закрытии формы, если в процедуру инициализации добавить Me.Show vbModal. Вторая - при её открытии, если туда же прописать Me.Show vbModeless. В обоих случаях Excel не рушится. Во втором - форма загружается и продолжает работать.

1
---------------------------
Microsoft Visual Basic
---------------------------
Run-time error '91':

Object variable or With block variable not set
---------------------------
ОК Справка
---------------------------

2
---------------------------
Microsoft Visual Basic
---------------------------
Run-time error '400':

Form already displayed; can't show modally
---------------------------
ОК Справка
---------------------------

Если загружать форму с ShowModal, выставленным по умолчанию (хоть True, хоть False), то ошибки при работы с формой нет.

Зато это
Код: plaintext
1.
2.
Private Sub CommandButton2_Click()
Me.Hide: Me.Show vbModal
End Sub
спокойно уживается с кодом на CommandButton1_Click()

Вот так.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / немодальная модальная
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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