RoMT
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Ответ на вопрос Zjaka, заданный тут Ссылка разобьем задачу на несколько составляющих 1. ввод данных типо "мама мыла раму" и задание соответствующих свойств. Например заставить вводить текст пользователя в ворде, визио, экселе не суть важно. Они вполне нормально интегрированы и можно спокойно работать сразу со всеми, но наверно проще в самом визио реализовать, чтобы не было открыто кучи окон и приложений. Потом этот же текст цветами выделять согласно свойствам. Или сделать какое-нить модальное окно, которое после разбора предложения в VBA будет предлагать слова предложения и какие типы к ним присвоить. Либо как вы предложили писать в таблицы, так по мне будет меньше путаницы и более понятно. В общем тут по-моему вы сами представляете как лучше вам сделать. 2. Хранение. Опять те же таблицы, либо в параметрах страницы визио или элемента визио (прописывая данные в раздел User-Defined cells см ниже). 3. Отображение. Если вы ходили по ссылкам, то приблизительно представляете, что такое мастер в Visio(как бы образец) и таблица свойств фигуры. Создаем образцы для каждого элемента нотации (как раз разрисовываю нужную форму, вид цвет и подобное). В таблице свойств фигуры в разделе User-Defined cells или Shape Data (тут смотря что удобнее и правильней для реализации будет) добавляем две строки : например "type_element", "data_element". В "type_element" пишем тип элемента: субъект, объект действие для нашего случая. В "data_element" впишем соответствующие данному типу «мама», «мыла», «раму». Чтобы в элементе отображалось, то что вы вписали в строки "data_element", нужно вставить в Shape так называемое «Поле», в котором прописать ссылку на нужную строку из таблицы свойств Shape. В общем сумбурно вышло, но поверьте ничего особо сложного в рисовании нет. Итак мы создали образцы, засунули их в «мои фигуры». Возвращаемся к разбору текста. После разбора «мама мыла раму» имеем 1 субъект «мама», 1 действо «мыло», 1 объект «рама». Придется написать макрос, который исходя из этих данных, вытащит на лист схемы нужное отображение элемента и пропишет в него соответствующие данные «мама», «мыло», «рама». В принципе макрос не очень сложный. 4. Проверка нового выражения. Опять же первая часть макроса разбивает предложения на слова, вторая часть макроса запрашивает все множество элементов на схеме, узнает их индекс(сие назначает сама visio, нужно чтобы потом целенаправленно работать именно с этим элементом), тип и данные из нами созданных строк "type_element", "data_element" и создает таблицу с этими данными. Потом просто находим совпадения между таблицей и данными из нового предложения и выделяем их соответствующим цветом, то что не совпало выделяем определенным цветом и просим юзера разобраться и определить что есть что. После того как юзер разобрался, либо удаляем всю схему и заново вытаскиваем соответствующие элементы и вписываем в них данные, либо оставляем то что совпало, удаляем из старого что не найдено и добавляем новое что не было в старом. Как говорится делаем по вкусу. Надеюсь, что хоть что-нибудь понятно из данного потока мысли |