Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

21 Октябрь 2017, 13:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice  без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Использование диалога в цикле – возможно или нет?  (Прочитано 386 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Dr_Lecter
Новичок
*
Offline Offline

Пол: Мужской
Расположение: г.Нжневартовск (ХМАО-Югра)
Сообщений: 49


« Стартовое сообщение: 31 Март 2017, 16:37 »

Здравствуйте!

Есть программа (макрос) которая забирает с оборудования текстовый файл, производит его парсинг по определенным условиям и вносит данные в шаблон медицинского протокола.
С целью повышения качества раннего выявления онкологии первым в городе решил перейти на международную систему классификации и четким формализованным описанием новообразований щитовидной железы.
Все что касается спорта данных и разнесения их по протоколу – сделал без особых проблем.
Осталось сделать форму для формализованного описания найденых образований по классификации TI-RADS с автоматическим расчетом баллов.

Нужна помощь с алгоритмом:

Т.к. эти данные (описательные) получить из сканера не возможно – их должен выбрать в диалоге врач.
Казалось-бы – нет проблем, рисуй диалог, пиши модуль и все.
Но есть нюанс –  образований в каждой доле щитовидной железы сканер поддерживает до 10 штук (ну т.е. данные на 10 образований справа и слева можно выгрузить со сканера – размеры, кровоток и всякое).

Следовательно и диалог описания каждого образования (он един для всех) должен будет повториться максимально 20 раз.
Я подозреваю, что написав его один раз его как-то можно использовать повторно, но как – не пойму.
Ведь к каждому элементу управления привязывается одна процедура на событие.

Можно конечно создать очередной "говнокод" – сам диалог скопировать 20 раз в 20 шагов и модуль его обработки тоже скопировать 20 раз тупо прибавляя по цифре шага к каждой переменной.
Получим в 20 раз разросшийся макрос и в 20 раз больше переменных, и кучу тормозов.
Но так делать не хочу – потому прошу помощи.

Во вложении  – шаблон без макросов.
Необходимо автоматически заполнять таблицы "ВЫЯВЛЕННЫЕ ОБЪЕМНЫЕ ОБРАЗОВАНИЯ ЛЕВОЙ ДОЛИ" и "ВЫЯВЛЕННЫЕ ОБЪЕМНЫЕ ОБРАЗОВАНИЯ ПРАВОЙ ДОЛИ"
Макрос у меня автоматически определяет сколько образований измерено на сканере, и удаляет лишние строки. Если образований не выявлено – удаляется вся таблица.

Второй путь – сделать списки из полей пользователя, но они во первых начинит при открытии шаблона сразу заполняться все, включая не пустые строки, т.к. макрос стартует по событию "Документ создан" а обход полей начинается раньше.
А во вторых – если использовать поля пользователя то автоматический расчет баллов толком не сделать.



* TI-RADS.odt (30.27 Кб - загружено 4 раз.)
Записан
idro
Новичок
*
Offline Offline

Сообщений: 24


« Ответ #1: 8 Апрель 2017, 07:32 »

Не очень всё таки понятно, в чем конкретно проблема.
Вызов диалога в цикле :
 For lNum=1 to 20
    oControl=oDialog1.GetControl("label")
    oControl.Model.Label = "Тут пишем о чем речь"
    oDialog1.Execute()
 Next

Диалог закрывает себя сам. Процедура, которая обрабатывается в диалоге, анализирует любой элемент управления который мы внесли перед открытием диалога . Либо TAG, любого элемента, который мы внесли перед вызовом диалога, и на основании этого принимает решение,  что делать
Например : Надо записать в 1 строку . Так и пишем в oControl.Model.Label  = "1 строка". Вызываем диалог, вносим данные, вызываем процедуру. Процедура, ищет что ей надо сделать если в oControl.Model.Label  будет запись "1 строка".  Ну и так далее.
« Последнее редактирование: 8 Апрель 2017, 07:42 от idro » Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!