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

Обновление страниц на TabControl

Добавлено: 23 ноя 2007, 21:38
tumanovalex
Мне нравится создавать интерфейс программы с помощью TabControl. На первую страницу я выношу элементы управления, а на другие - элементы визуализации. К сожалению, при таком построении графики на других страницах не обновляются при активной первой странице и измененении значений в органах управления на первой странице. В прикрепленном файле дается пример, который это иллюстрирует. При изменении количества отчетов с 160 например до 1600 и запуске программы при активной первой странице график на второй странице не обновляется. В реальных программах у меня несколько страниц с графиками (графики исходных сигналов, графики промежуточных и окончательных результатов). Подскажите, пожалуйста, как сделать так, чтобы при активной первой странице, изменении на ней значений элементов управления и запуске программы обновлялись графики на других страницах.

Добавлено: 23 ноя 2007, 23:58
Eugen Graf
1. Ну начнём с того что я не очень понял саму проблему, хотя по-моему похожие странности я замечал. С другой стороны если график не показывается пользователю, то зачем его вообще обновлять?

2. Хочу сказать что XY-Plot является лучшим выбором из трёх видов представления графиков. Сам Waveform Graph является тем же XY-Plot-ом, подогнанным для представления сигнала. Если узнать с помощью SizeArray количество элементов в эррей X, то можно сделать эррей от 0 до этого количества, умножить каждый элемент на dt и прибавить t0, то можно представить то же самое на XY-Plot.

3. Построение программы на Tab Control не лучший вариант, но у каждого свой вкус. Вариантом получше является Sub Panel (правда я с ним не работал) или же разделение управления и представления данных на два разных окна (этим я всегда и пользуюсь).

4. Что касается блок диаграммы, то я не понимаю зачем нужен Frame Sequence.

Добавлено: 24 ноя 2007, 12:44
tumanovalex
Отвечаю на вопросы:
1. Обновлять нужно для того, посмотреть результаты работы (промежуточные, окончательные и др.) при изменении значений контролов. Если программа маленькая, то можно переключиться на нужную страницу, а если выполняется долго, то это плохо. Т.е. хотелось бы следующее: изменил значения на странице с контролами, запустил, посмотрел результаты на нужных вкладках.
2. Мне нужно посмотрель, в чем разница, раньше я с помощью функций Wafeform делал это на Waveform Graph, вообщем, посмотрю.
3. С Sub Panel не работал, даже не знаю, что это такое. Tab Control мне нравится, я могу сделать любое количество графиков любых размеров. Разделением управления и представления данных на два разных окна раньше не пользовался. Как это сделать и можно ли разместить в окне представления данных много графиков нужных размеров?
4. Frame Sequence не нужен, просто у меня есть простой шаблон из двух страниц и Frame Sequence (для сложных программ с последовательным выполнением). Я его просто не удаляю.
Я и дальше собираюсь использовать страницы, так что решение этой задачи для меня очень важно (реальная программа достаточно долго выполняется и требует удобной визуализации)

Добавлено: 26 ноя 2007, 12:06
Eugen Graf
К сожалению я никаких глюков в твоём VI не наблюдаю, или не совсем понимаю в чём проблема. У меня вроде всё обновляется:
иду на первую страницу, выставляю настройки, запускаю
потом иду на вторую и смотрю себе результат

всё в порядке.

Добавлено: 27 ноя 2007, 08:38
tumanovalex
Странно! Вот что у меня: F = 537, #s=160, Fs = 16000, Amp = 10. Активна Page1. Запускаю программу, переключаюсь на Page2, вижу чуть более 5 периодов. Запускаю при активной второй странице, все нормально, та же картина. Опять ативна первая страница, устанавливаю #s=1600 (в 10 раз больше), запускаю программу. Переключаюсь на страницу 2 и вижу опять ту же картину (чуть более 5 периодов). Запускаю программу при активной второй странице, вижу очень много периодов. Вывод: рисунок обновляется только при активной странице с этим рисунком. На всякий случай прикрепляю файл, на котором экспериментировал.
Запустил твой пример с XYGraph, особых преимуществ перед Waveform не заметил.

Добавлено: 27 ноя 2007, 12:06
Eugen Graf
Ок, теперь вроде бы понял в чём проблема, ну посмотрим, поищем что можно сделать.

Добавлено: 27 ноя 2007, 21:25
tumanovalex
Очень надеюсь на помощь, не могу никак понять, как можно решить эту проблемы

Добавлено: 27 ноя 2007, 21:52
Eugen Graf
Попробовал у себя. Всё делал как ты сказал, глюк отсутствует (версия 8.0.1)
Какую версию LabVIEW ты используешь? Посмотри в баглистинге, если что обратись в офис НИ.
Могу ещё дома на 7.1 попробовать, посмотрю может увижу глюк, напишу.

Попробуй взять совсем новый график, может ты где нибудь в свойствах переставил что нибудь и забыл.

Добавлено: 27 ноя 2007, 23:58
tumanovalex
Да, на 8 версии такого нет. Я использую обычно LabView 6.0, он быстрый и маленький без лишних красивостей. Раньше я глюков не замечал, это первый. Спасибо, что проверил. Теперь я буду знать особенности 6 версии.

Добавлено: 28 ноя 2007, 00:00
Eugen Graf
Ну что, остановимся на этом или будем копать дальше и искать альтернативу? У меня правда только 6.1 и только для линукса имеется, посмотрю что будет.
tumanovalex писал(а):Да, на 8 версии такого нет. Я использую обычно LabView 6.0, он быстрый и маленький без лишних красивостей. Раньше я глюков не замечал, это первый. Спасибо, что проверил. Теперь я буду знать особенности 6 версии.
Наверное поэтому тебе на другух форумах никто и не отвечает, потому что не врубаются о чём ты спрашиваеш, т.к. шестая версия LabVIEW уже прошлый век.

И так, пробовал на 6.1для линукса, на 7.1, на 8.0.1 и на 8.2 и нигде глюка не наблюдается, сорри.

Добавлено: 28 ноя 2007, 22:29
tumanovalex
Все, спасибо, тему считаю закрытой. Посмотри, пожалуйста, мой вопрос по DLL, может быть поможешь.