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

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

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

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

Добавлено: 09 июн 2013, 01:22
Viktor
Tab Control не подойдет?

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

Добавлено: 09 июн 2013, 16:07
Dogma
Victor

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

Заранее спасибо!

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

Добавлено: 09 июн 2013, 16:14
Viktor

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

Добавлено: 09 июн 2013, 19:46
dadreamer
Dogma писал(а):Что нужно сделать, что бы после авторизации окно пропадало и когда пользователь выходит из основного приложения с помощью нажатия кнопки "Выход", панель авторизации снова появлялась?
При открытии вашего SubVI скрывайте основную форму, т.е. делайте её невидимой: http://digital.ni.com/public.nsf/allkb/ ... F3006E258B При закрытии SubVI снова показывайте главную форму, передавая в качестве State значение Standard. Посмотрите ещё здесь.

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

Добавлено: 09 июн 2013, 23:14
Dogma
dadreamer писал(а): При открытии вашего SubVI скрывайте основную форму, т.е. делайте её невидимой: http://digital.ni.com/public.nsf/allkb/ ... F3006E258B При закрытии SubVI снова показывайте главную форму, передавая в качестве State значение Standard. Посмотрите ещё здесь.
Спасибо, ваш вариант помог решить задачу!

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

Добавлено: 16 авг 2013, 19:55
Valentin
А возможно сделать так, чтобы при открытии SubVI я мог менять в режиме реального времени менять размеры окна?

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

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

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

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

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

Добавлено: 17 авг 2013, 09:51
dadreamer
Valentin, имеете в виду, что нужно прокрутить панель до необходимого места (как при вращении колесика мыши)? Тогда вот эта тема подойдёт: https://decibel.ni.com/content/docs/DOC-9771 Если же нужно переместить окно с панелью на какое-то место на экране, то подойдёт свойство FP.WinBounds (по аналогии с FP.PanelBounds). Центрировать можно методом FP.Center.

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

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

К чему я задаю все эти вопросы.) В программе у меня стоит Tab Control. Мне нужно сделать так, чтобы при запуске программы у меня, изменяя FP.WinBounds, показывался толькo Tab Control. А затем при нажатии на кнопку у меня показывался индикатор, который находится рядом с Tab Control. При этом окно всегда в центре экрана.

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

Добавлено: 19 авг 2013, 08:51
dadreamer
Valentin, ну, попробуйте сперва центрировать, потом получить текущие границы окна (WinBounds), по ним узнаете координаты левого верхнего угла. Далее создадите новый кластер, в котором первая точка - этот самый угол, а вторую (правый нижний угол) сделаете такой, как вам нужно, согласно ширине и высоте панели.

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

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

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

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

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

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