Page 1 of 1

Добавить текст в Table Control

PostPosted: 02 Aug 2017, 12:41
by engineer_7
Добрый день! Посоветуйте пожалуйста, как решить следующую задачу:

1. Необходимо выводить текст по условию(по нажатию различных кнопок) в table control.
1.1. Если table control пустой то записываем в первую строку сообщение.
1.2. Если первая строка не пустая, переходим на вторую и так далее.
1.3. Если кнопку отжали, то та строка в которую записались события о нажатии кнопки, должна стать пустой.

В общем, мне примерно представляется алгоритм следующим образом(предположим, что произошло нажатие кнопки):
1) Проверяем первую строку, если пустая, то записываем, если нет, переходим на следующую(вот собственно как реализовать автоматический переход если у нас 1000 заполненных строк).
2) Кнопку отжали, находим записанное значение(просто сравниваем значение в ячейке со значением с кнопки, повторяющихся значений в table control не будет), делаем строку пустую(а как ее целиком удалить? т.е. сместить индексы последующих элементов на 1 влево, при этом недорого и быстро).

И еще меня интересует возможность скрывать пустые строки, то есть изначально задать размеры table control, если что то записываем и наша запись выходит за размеры table control, то просто пользуемся полосой прокрутки для просмотра информации. Иначе, если например у нас всего одна строка, а например размеры table control рассчитаны на 5 таких строк, то мы растягиваем эту строку по размеру table control.

Re: Добавить текст в Table Control

PostPosted: 02 Aug 2017, 12:55
by Artem.spb
table control - это 2D массив строк.
так что мудрить с поиском последней нет необходимости - достаточно добавить 1d массив в конец имеющегося.
С удаление маналогично - удалить строку/столбец из массива и отправить его (массив) обратно в индикатор.

Размер коонтрола программно можно задавать свойствами Number of Columns/Rows
http://zone.ni.com/reference/en-XX/help ... p/table_p/

Re: Добавить текст в Table Control

PostPosted: 02 Aug 2017, 14:09
by engineer_7
Artem.spb wrote:table control - это 2D массив строк.
так что мудрить с поиском последней нет необходимости - достаточно добавить 1d массив в конец имеющегося.
С удаление маналогично - удалить строку/столбец из массива и отправить его (массив) обратно в индикатор.

Размер коонтрола программно можно задавать свойствами Number of Columns/Rows
<!-- m --><a class="postlink" href="http://zone.ni.com/reference/en-XX/help/371361J-01/lvprop/table_p/">http://zone.ni.com/reference/en-XX/help ... p/table_p/</a><!-- m -->
И как это можно сделать?

Re: Добавить текст в Table Control

PostPosted: 02 Aug 2017, 14:25
by engineer_7
engineer_7 wrote:
Artem.spb wrote:table control - это 2D массив строк.
так что мудрить с поиском последней нет необходимости - достаточно добавить 1d массив в конец имеющегося.
С удаление маналогично - удалить строку/столбец из массива и отправить его (массив) обратно в индикатор.

Размер коонтрола программно можно задавать свойствами Number of Columns/Rows
<!-- m --><a class="postlink" href="http://zone.ni.com/reference/en-XX/help/371361J-01/lvprop/table_p/">http://zone.ni.com/reference/en-XX/help ... p/table_p/</a><!-- m -->
И как это можно сделать?
Реализовал с помощью build array, теперь вопрос о том как удалить добавленный массив.

Re: Добавить текст в Table Control

PostPosted: 02 Aug 2017, 15:21
by Artem.spb
как ни странно, в той же палитре array есть и функция delete from array, указываете ей номер столбца/строки, и она его удаляет.

Re: Добавить текст в Table Control

PostPosted: 02 Aug 2017, 15:39
by engineer_7
Artem.spb wrote:как ни странно, в той же палитре array есть и функция delete from array, указываете ей номер столбца/строки, и она его удаляет.
Артем, спасибо за терпение, разобрался я :D
Image
загрузка картинок

Re: Добавить текст в Table Control

PostPosted: 02 Aug 2017, 15:58
by Artem.spb
Изображения нужно загружать на сервер.

И :labview:, это не паскаль, тут нет надобности заводить переменные.
Вот два варианта решения без них. Во втором случае надо бы ещё проверять индекс на выход за диапазаоны массива, иначе программа может уйти в бесконечный цикл, если строка так и не будет найдена.
table.png

Re: Добавить текст в Table Control

PostPosted: 02 Aug 2017, 18:01
by engineer_7
Artem.spb wrote:Изображения нужно загружать на сервер.

И :labview:, это не паскаль, тут нет надобности заводить переменные.
Вот два варианта решения без них. Во втором случае надо бы ещё проверять индекс на выход за диапазаоны массива, иначе программа может уйти в бесконечный цикл, если строка так и не будет найдена.
<!-- ia0 -->table.png<!-- ia0 -->
Артем, понял Вас, исправил. А хотел бы узнать, как в labview влияют на производительность и память дополнительные переменные(локальные/глобальные)? Может есть какие нибудь статьи по написанию качественного производительного кода?

Re: Добавить текст в Table Control

PostPosted: 02 Aug 2017, 21:28
by Artem.spb
Переменные в разумных пределах тормозят не очень, хотя каждое обращение к переменной может требовать выделения памяти под ней, но на современных машинах при малых объёмах обрабатываемых данных вы этого не заметите.
Дело в другом, :labview: - это другой стиль программирования, потоком данных.
Наличие переменных затрудняет отладку, потому что кто его знает, где ещё эта переменная пишется. плюс может возникнуть гонка приоритетов, если к переменной обращаются одновременно несколько функций.

Из книг могу посоветовать Питер Блюм "LabVIEW: стиль программирования"
Правда я её читал лет 10 назад, и появилось ли что-то новее и лучше, не знаю.