Страница 1 из 1

Окно не всегда активно

Добавлено: 30 Ноябрь 2025, 13:14
gopstop2007
Приветствую всех.
Заметил, что окно для ввода пароля открывается раньше фрейма приложения, не всегда становится активным при запуске программы.
То есть, при запуске программы, по окну с паролем надо дополнительно щёлкнуть мышью. Хотелось бы сразу вводить логин и пароль, а не заморачиваться с мышью. )
У меня всегда активно, у некоторых клиентов нет, это наблюдается при работе с windows 10.
Настройки окна не MDI, в Propererties - Option, активно только ModalWindow.
Как сделать окно всегда активным?

С10 ABC

Окно не всегда активно

Добавлено: 30 Ноябрь 2025, 15:02
kreator
Modal Window - нерабочая опция сейчас вроде бы. А в какой момент вызывается это окно? Я бы перенёс вызов до открытия фрейма. Уточните этот момент.

Окно не всегда активно

Добавлено: 30 Ноябрь 2025, 15:33
Дед Пахом
Я бы вызывал в Event:OpenWindow фрейма.

Окно не всегда активно

Добавлено: 30 Ноябрь 2025, 16:18
gopstop2007
kreator писал(а): 30 Ноябрь 2025, 15:02 Modal Window - нерабочая опция сейчас вроде бы. А в какой момент вызывается это окно? Я бы перенёс вызов до открытия фрейма. Уточните этот момент.
Открывается до открытия App Frame приложения, открытие в app frame в Embeds - Run Procedute(), BYTE, Virtual (Preority - 2250)
Дед Пахом писал(а): 30 Ноябрь 2025, 15:33 Я бы вызывал в Event:OpenWindow фрейма.
Не совсем понял, что в чем вызвать )

Забыл уточнить, это приложение мульти-DLL.

Окно не всегда активно

Добавлено: 30 Ноябрь 2025, 16:22
Дед Пахом
gopstop2007 писал(а): 30 Ноябрь 2025, 16:18 Не совсем понял, что в чем вызвать )
Я бы вызывал процедуру ввода пароля в Event:OpenWindow фрейма.

Окно не всегда активно

Добавлено: 30 Ноябрь 2025, 16:31
gopstop2007
Дед Пахом писал(а): 30 Ноябрь 2025, 16:22
gopstop2007 писал(а): 30 Ноябрь 2025, 16:18 Не совсем понял, что в чем вызвать )
Я бы вызывал процедуру ввода пароля в Event:OpenWindow фрейма.
Много чего придется переделывать, проверка происходит до открытия, если логин или пароль не верен, то возвращается Level:Cancel и фрейм даже не открывается.

Окно не всегда активно

Добавлено: 30 Ноябрь 2025, 16:44
Дед Пахом
Я предпочитаю такие вещи проверять при уже открытом фрейме, так юзер видит, куда он, собственно, логинится.
И все изменения, насколько я понимаю, должны свестись к переносу 3-х строчек в другую точку.

Код: Выделить всё

!- это после OPEN(AppFrame)
!IF Login() = FALSE
!  RETURN Level:Cancel
!END

!- это в Event:OpenWindow
IF Login() = FALSE
  POST(Event:CloseWindow)
END

Окно не всегда активно

Добавлено: 30 Ноябрь 2025, 17:04
gopstop2007
Дед Пахом писал(а): 30 Ноябрь 2025, 16:44 Я предпочитаю такие вещи проверять при уже открытом фрейме, так юзер видит, куда он, собственно, логинится.
И все изменения, насколько я понимаю, должны свестись к переносу 3-х строчек в другую точку.

Код: Выделить всё

!- это после OPEN(AppFrame)
!IF Login() = FALSE
!  RETURN Level:Cancel
!END

!- это в Event:OpenWindow
IF Login() = FALSE
  POST(Event:CloseWindow)
END
Если бы, у меня сделано так, программа онлайн, сначала ввод пароля, потом загрузка данных(если есть изменения) с сервера и еще некоторые мелочи.
Если сделать как Вы указали, то после ввода пароля загрузка данных будет происходить уже при открытом фрейме, их бывает достаточно много (более 100 таблиц), клиенты не любят ждать и пытаются начать работать с программой ) Потом еще в зависимости от роли (привилегии) пользователя открывается нужный вид фрейма приложения.

Окно не всегда активно

Добавлено: 30 Ноябрь 2025, 17:44
Игорь Столяров
gopstop2007 писал(а): 30 Ноябрь 2025, 17:04 сначала ввод пароля, потом загрузка данных(если есть изменения) с сервера
Ну так и сделайте как написали. Т.е.:

Код: Выделить всё

  StartMySoft Procedure
    Code  
    If CheckPasswordWindow() = True
       If LoadInfoServer() = True   
          Main()
       end          
    end
Нет ведь необходимости обязательно всё делать внутри фрейма (Main) ... :)

Окно не всегда активно

Добавлено: 30 Ноябрь 2025, 18:17
finsoftrz
Замечал подобное поведение, но только когда программа перезапускается по chain.
Дед Пахом писал(а): 30 Ноябрь 2025, 16:22
gopstop2007 писал(а): 30 Ноябрь 2025, 16:18 Не совсем понял, что в чем вызвать )
Я бы вызывал процедуру ввода пароля в Event:OpenWindow фрейма.
Не всем подходит. Например, у меня несколько фреймов, которые могут выбираться в зависимости от роли пользователя.