Использование диалога в цикле – возможно или нет?

Автор Dr_Lecter, 31 марта 2017, 16:37

0 Пользователи и 1 гость просматривают эту тему.

Dr_Lecter

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

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

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

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

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

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

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

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



idro

#1
Не очень всё таки понятно, в чем конкретно проблема.
Вызов диалога в цикле :
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 строка".  Ну и так далее.