Одна оболочка

Обсуждение, связанное с разработкой ПО верхнего уровня
Dogma
interested
interested
Сообщения: 3
Зарегистрирован: 08 июн 2013, 22:47
Версия LabVIEW: 9.0
Контактная информация:

Одна оболочка

Сообщение Dogma »

Доброго времени суток!
Пожалуйста, помогите решить проблему.
Создал приложение,которое состоит из отдельных подпрограмм: Меню и Тесты. Как сделать так,что бы когда выбираешь подпрограмму тесты, закрывалось подпрограмма меню и открывалась подпрограмма тесты? Когда я нажимаю на кнопку "Тесты" у меня подпрограмма открывается в отдельном окне и соответственно подпрограмма меню остается. Реально ли это как-то исправить, что бы все было в одной оболочке, а не "разорвано" на куски?
Аватара пользователя
Viktor

Activity Professionalism Tutorials Black
expert
expert
Сообщения: 1408
Зарегистрирован: 23 мар 2008, 10:56
Награды: 4
Версия LabVIEW: 2020
Откуда: Санкт-Петербург
Благодарил (а): 17 раз
Поблагодарили: 3 раза
Контактная информация:

Re: Одна оболочка.

Сообщение Viktor »

Tab Control не подойдет?
Dogma
interested
interested
Сообщения: 3
Зарегистрирован: 08 июн 2013, 22:47
Версия LabVIEW: 9.0
Контактная информация:

Re: Одна оболочка.

Сообщение Dogma »

Victor

Спасибо, да помогло, от части, у меня еще есть приложение авторизации, т.е. вход в тестирование осуществляется через процедуру ввода логина и пароля, и окно авторизации после входа остается на заднем плане основного приложения. Что нужно сделать, что бы после авторизации окно пропадало и когда пользователь выходит из основного приложения с помощью нажатия кнопки "Выход", панель авторизации снова появлялась?

Заранее спасибо!
Аватара пользователя
Viktor

Activity Professionalism Tutorials Black
expert
expert
Сообщения: 1408
Зарегистрирован: 23 мар 2008, 10:56
Награды: 4
Версия LabVIEW: 2020
Откуда: Санкт-Петербург
Благодарил (а): 17 раз
Поблагодарили: 3 раза
Контактная информация:

Re: Одна оболочка.

Сообщение Viktor »

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Одна оболочка.

Сообщение dadreamer »

Dogma писал(а):Что нужно сделать, что бы после авторизации окно пропадало и когда пользователь выходит из основного приложения с помощью нажатия кнопки "Выход", панель авторизации снова появлялась?
При открытии вашего SubVI скрывайте основную форму, т.е. делайте её невидимой: http://digital.ni.com/public.nsf/allkb/ ... F3006E258B При закрытии SubVI снова показывайте главную форму, передавая в качестве State значение Standard. Посмотрите ещё здесь.
Dogma
interested
interested
Сообщения: 3
Зарегистрирован: 08 июн 2013, 22:47
Версия LabVIEW: 9.0
Контактная информация:

Re: Одна оболочка.

Сообщение Dogma »

dadreamer писал(а): При открытии вашего SubVI скрывайте основную форму, т.е. делайте её невидимой: http://digital.ni.com/public.nsf/allkb/ ... F3006E258B При закрытии SubVI снова показывайте главную форму, передавая в качестве State значение Standard. Посмотрите ещё здесь.
Спасибо, ваш вариант помог решить задачу!
Valentin
beginner
beginner
Сообщения: 43
Зарегистрирован: 26 июл 2013, 15:24
Версия LabVIEW: 2011-2012
Контактная информация:

Re: Одна оболочка.

Сообщение Valentin »

А возможно сделать так, чтобы при открытии SubVI я мог менять в режиме реального времени менять размеры окна?
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Одна оболочка.

Сообщение dadreamer »

Valentin, у текущего :vi: вы можете менять размеры фронтальной панели: https://decibel.ni.com/content/docs/DOC-13727 Я думаю, для SubVI это делается аналогично.
Valentin
beginner
beginner
Сообщения: 43
Зарегистрирован: 26 июл 2013, 15:24
Версия LabVIEW: 2011-2012
Контактная информация:

Re: Одна оболочка.

Сообщение Valentin »

dadreamer писал(а):Valentin, у текущего :vi: вы можете менять размеры фронтальной панели: https://decibel.ni.com/content/docs/DOC-13727 Я думаю, для SubVI это делается аналогично.
А если мне нужно перейти в какое определенное место в панели?
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Одна оболочка.

Сообщение dadreamer »

Valentin, имеете в виду, что нужно прокрутить панель до необходимого места (как при вращении колесика мыши)? Тогда вот эта тема подойдёт: https://decibel.ni.com/content/docs/DOC-9771 Если же нужно переместить окно с панелью на какое-то место на экране, то подойдёт свойство FP.WinBounds (по аналогии с FP.PanelBounds). Центрировать можно методом FP.Center.
Valentin
beginner
beginner
Сообщения: 43
Зарегистрирован: 26 июл 2013, 15:24
Версия LabVIEW: 2011-2012
Контактная информация:

Re: Одна оболочка.

Сообщение Valentin »

dadreamer писал(а):то подойдёт свойство FP.WinBounds (по аналогии с FP.PanelBounds). Центрировать можно методом FP.Center.
Спасибо за подсказку. Нашел пару примеров и попробовал и совместить. Но появилась проблема: если запустить Run continuosly, то у меня идет конфликт между FP.WinBounds и FP.Center (если запустить :vi: , то всё понятно). Можно ли каким-нибудь образом решить (т.е. центрировать окно, а затем как я захочу мне нужно изменять его размеры. При этом оно всегдо в центре)?

К чему я задаю все эти вопросы.) В программе у меня стоит Tab Control. Мне нужно сделать так, чтобы при запуске программы у меня, изменяя FP.WinBounds, показывался толькo Tab Control. А затем при нажатии на кнопку у меня показывался индикатор, который находится рядом с Tab Control. При этом окно всегда в центре экрана.
Вложения
Manipulate the front panel.vi
ver. 2011
(16.27 КБ) 256 скачиваний
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Одна оболочка.

Сообщение dadreamer »

Valentin, ну, попробуйте сперва центрировать, потом получить текущие границы окна (WinBounds), по ним узнаете координаты левого верхнего угла. Далее создадите новый кластер, в котором первая точка - этот самый угол, а вторую (правый нижний угол) сделаете такой, как вам нужно, согласно ширине и высоте панели.
Valentin
beginner
beginner
Сообщения: 43
Зарегистрирован: 26 июл 2013, 15:24
Версия LabVIEW: 2011-2012
Контактная информация:

Re: Одна оболочка.

Сообщение Valentin »

dadreamer писал(а):Valentin, ну, попробуйте сперва центрировать, потом получить текущие границы окна (WinBounds), по ним узнаете координаты левого верхнего угла. Далее создадите новый кластер, в котором первая точка - этот самый угол, а вторую (правый нижний угол) сделаете такой, как вам нужно, согласно ширине и высоте панели.
В принципе получилось. Но придя домой обнаружил, что при разном разрешении экрана координаты FP.PanelBounds, используя FP.Center, различны. Можно ли это каким-нибудь образом сделать универсальным?
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Одна оболочка

Сообщение dadreamer »

Valentin, может быть, выставить в настройках :vi: опции Position = Centered (категория Window Run-Time Position) и Maintain proportions of window for different monitor resolutions (категория Window Size)?
Valentin
beginner
beginner
Сообщения: 43
Зарегистрирован: 26 июл 2013, 15:24
Версия LabVIEW: 2011-2012
Контактная информация:

Re: Одна оболочка

Сообщение Valentin »

dadreamer писал(а):Valentin, может быть, выставить в настройках :vi: опции Position = Centered (категория Window Run-Time Position) и Maintain proportions of window for different monitor resolutions (категория Window Size)?
Спасибо.
Ответить

Вернуться в «Лицевая панель»