Форум пользователей Visio
http://visio.getbb.ru/

MS Visio 2007 (Win XP): тест с полями ввода на изображении
http://visio.getbb.ru/viewtopic.php?f=6&t=1045
Страница 1 из 2

Автор:  AlekseyVisio [ 07 ноя 2016, 21:04 ]
Заголовок сообщения:  MS Visio 2007 (Win XP): тест с полями ввода на изображении

Уважаемые участники форума, приветствую!
Не так давно возникла необходимость создать тест на основе MS Visio. Смысл следующий.
1) Имеется схематическое изображение, содержащее фрагменты, названия которых необходимо запомнить;
2) Необходимо в поле, расположенное рядом с фрагментом, ввести название;
3) Введенное значение должно полностью совпадать с заданным.

Предполагаемый механизм.
Эталонные названия фрагментов сравниваются с данными, введенными с клавиатуры сразу после нажатия на Enter.\
Можно посмотреть подсказку.

Для меня это совершенно новая область. Прошу, если кто знает, как можно организовать такой механизм, подскажите!

С уважением.

Автор:  Tumanov [ 07 ноя 2016, 21:30 ]
Заголовок сообщения:  Re: MS Visio 2007 (Win XP): тест с полями ввода на изображении

Вам приходилось программировать на VBA?

Автор:  AlekseyVisio [ 07 ноя 2016, 21:31 ]
Заголовок сообщения:  Re: MS Visio 2007 (Win XP): тест с полями ввода на изображении

Да, есть немного! Это поможет оптимально решить задачу, скажите?

Автор:  AlekseyVisio [ 07 ноя 2016, 21:46 ]
Заголовок сообщения:  Re: MS Visio 2007 (Win XP): тест с полями ввода на изображении

Подскажите: придется ли работать с таблицами свойств фигуры?

Автор:  Tumanov [ 07 ноя 2016, 22:18 ]
Заголовок сообщения:  Re: MS Visio 2007 (Win XP): тест с полями ввода на изображении

Даже когда возможны оба пути (программный на VBA и на основе формул шейп-листа), путь с VBA осваивается проще. Причем через VBA решается практически любая задача, а через формулы не любая.
А вот если не новичок, то с формулами иногда получается проще.
Навскидку трудно сказать, достаточно ли будет в этой задаче только формул. Может и достаточно.
-----
"Таблицы свойств фигуры" - это наверное ShapeSheet? Тогда придется. Практически всегда программа получает данные из ячеек шейп-листа (ShapeSheet). И пишет туда же. Ну а если задача решается на основе формул, то тем более придется.

Автор:  Tumanov [ 07 ноя 2016, 22:30 ]
Заголовок сообщения:  Re: MS Visio 2007 (Win XP): тест с полями ввода на изображении

Вот, например, как проверяется значение на уровне формул.
прямоугольник будет зеленым только в том случае, если в нем будет текст "dog".
Это потому, что в ячейке, отвечающей за заливку шейпа стоит формула, сравнивающая текст шейпа с текстовой константой.

Вложения:
a.jpg
a.jpg [ 27.54 Кб | Просмотров: 1205 ]

Автор:  Tumanov [ 07 ноя 2016, 22:42 ]
Заголовок сообщения:  Re: MS Visio 2007 (Win XP): тест с полями ввода на изображении

А второй вариант (с использованием VBA) - в ячейку завершения редактирования (секция Events ячейка TheText пишется вызов макроса)
Код:
=RUNMACRO("ThisDocument.ttt")

а в модуль ThisDocument - текст макроса
Код:
Sub ttt()
    If ActiveWindow.Selection(1).Text = "dog" Then
        ActiveWindow.Selection(1).Cells("FillForegnd") = 3
    Else
        ActiveWindow.Selection(1).Cells("FillForegnd") = 2
    End If
End Sub

Эффект будет таким же.
При завершении редактирования сработает событие вызова макроса. Макрос сравнит текст селектированного шейпа с константой и запишет в ячейку, отвечающую за цвет, нужное значение. Шейп станет красным или зеленым.

Автор:  AlekseyVisio [ 07 ноя 2016, 22:47 ]
Заголовок сообщения:  Re: MS Visio 2007 (Win XP): тест с полями ввода на изображении

Благодарю! Надеюсь, справлюсь!

Автор:  AlekseyVisio [ 08 ноя 2016, 10:15 ]
Заголовок сообщения:  Re: MS Visio 2007 (Win XP): тест с полями ввода на изображении

Классно! То, что надо )
Признаться, вчера возникла идея зациклить тест: через каждые n секунд произвольный зеленый прямоугольник (т.е. тот, где верный ответ), сбрасывает свое значение. Так приходится постоянно вводить значения, пока не надоест, либо пока не поймешь, что все запомнил.
Подскажите, пожалуйста, решение такой задачи, скорее всего, организовывается с помощью VBA?
Спасибо!

Автор:  Surrogate [ 08 ноя 2016, 11:21 ]
Заголовок сообщения:  Re: MS Visio 2007 (Win XP): тест с полями ввода на изображении

AlekseyVisio, получил маляву от админов с киберфорума - просили тебе помочь. Но ты к этому времени уже получил здесь ответ…
Честно говоря не совсем понял весь глобальный замысел, но кажется эта тема тоже может быть полезна Ищу шаблон-мастер для создания кроссвордов
с последним пожеланием про зацикливание вообще не понял Изображение

Автор:  Tumanov [ 08 ноя 2016, 12:39 ]
Заголовок сообщения:  Re: MS Visio 2007 (Win XP): тест с полями ввода на изображении

Цитата:
Подскажите, пожалуйста, решение такой задачи, скорее всего, организовывается с помощью VBA?

Ну да, с VBA будет проще всего.
По таймеру периодически запускается программка и чистит тексты нужных шейпов (по списку или перебором всех шейпов с фильтрацией по определенному признаку).
Хотя, если для простоты запускать такой макрос не по таймеру, а по кнопке, эффект будет в общем-то схожий.
Шейпы перебирать в коллекции ActivePage.Shapes.
Признак для фильтрации нужно придумать. Например, записать нечто отличительное в User ячейку.

Автор:  AlekseyVisio [ 08 ноя 2016, 14:51 ]
Заголовок сообщения:  Re: MS Visio 2007 (Win XP): тест с полями ввода на изображении

Tumanov писал(а):
Ну да, с VBA будет проще всего.
По таймеру периодически запускается программка и чистит тексты нужных шейпов (по списку или перебором всех шейпов с фильтрацией по определенному признаку).
Хотя, если для простоты запускать такой макрос не по таймеру, а по кнопке, эффект будет в общем-то схожий.
Шейпы перебирать в коллекции ActivePage.Shapes.
Признак для фильтрации нужно придумать. Например, записать нечто отличительное в User ячейку.
Хм, надо подумать, спасибо!

Автор:  AlekseyVisio [ 08 ноя 2016, 14:58 ]
Заголовок сообщения:  Re: MS Visio 2007 (Win XP): тест с полями ввода на изображении

Surrogate писал(а):
AlekseyVisio, получил маляву от админов с киберфорума - просили тебе помочь. Но ты к этому времени уже получил здесь ответ…
Честно говоря не совсем понял весь глобальный замысел, но кажется эта тема тоже может быть полезна Ищу шаблон-мастер для создания кроссвордов
с последним пожеланием про зацикливание вообще не понял Изображение


Да, спасибо! Ответ был получен здесь )
Глобальный замысел следующий.
Есть схематическое изображение - механизм, чертеж, оборудование, логическая карта и т.д., - содержащее большое количество названий составных частей, которые необходимо жестко запомнить. Поскольку идет привязка к изображению, то запоминать будет проще - особенно, если ответ вводить руками много раз. Много раз получится, если текст в фигурах будет периодически (рандомно) стираться, чтобы пришлось снова его вводить. Это и есть основная идея - многократное повторение для жесткого заучивания )

Автор:  Surrogate [ 08 ноя 2016, 14:59 ]
Заголовок сообщения:  Re: MS Visio 2007 (Win XP): тест с полями ввода на изображении

AlekseyVisio писал(а):
надо подумать
надо еще подумать как выйти из этого цикла Изображение, я так думаю©

Автор:  AlekseyVisio [ 08 ноя 2016, 16:07 ]
Заголовок сообщения:  Re: MS Visio 2007 (Win XP): тест с полями ввода на изображении

Surrogate писал(а):
AlekseyVisio писал(а):
надо подумать
надо еще подумать как выйти из этого цикла Изображение, я так думаю©


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

Автор:  AlekseyVisio [ 26 янв 2017, 22:28 ]
Заголовок сообщения:  Re: MS Visio 2007 (Win XP): тест с полями ввода на изображении

Всем доброго времени суток!
Появилось время вернуться к решению задачи :) Но, вот, проблема: никак не удается пройти в редактор Visual Basic.
Нахожусь на созданном листе, версия MS Visio 2007 SP3 русифицированная, Сервис - Макрос - Редактор Visual Basic неактивен ((
Подскажите, как можно "оживить" его?
Спасибо!

Автор:  AlekseyVisio [ 26 янв 2017, 23:29 ]
Заголовок сообщения:  Re: MS Visio 2007 (Win XP): тест с полями ввода на изображении

Решение текущей проблемы найдено: произвел доустановку профессионального выпуска :)

Автор:  AlekseyVisio [ 26 янв 2017, 23:37 ]
Заголовок сообщения:  Re: MS Visio 2007 (Win XP): тест с полями ввода на изображении

Tumanov писал(а):
Вот, например, как проверяется значение на уровне формул.
прямоугольник будет зеленым только в том случае, если в нем будет текст "dog".
Это потому, что в ячейке, отвечающей за заливку шейпа стоит формула, сравнивающая текст шейпа с текстовой константой.


Воспользовался первым способом - редактирование ячейки Fill Foregnd таблицы Fill Format. Смена заливки по условию (ввод верного текста) работает отлично! Благодарю!
Теперь пробую на простом примере разобраться, как использовать VBA..

Автор:  AlekseyVisio [ 26 янв 2017, 23:46 ]
Заголовок сообщения:  Re: MS Visio 2007 (Win XP): тест с полями ввода на изображении

Вот файл, на примере которого я пытаюсь разобраться в решении поставленной задачи.

Вложения:
Test.zip [17.95 Кб]
Скачиваний: 62

Автор:  AlekseyVisio [ 26 янв 2017, 23:52 ]
Заголовок сообщения:  Re: MS Visio 2007 (Win XP): тест с полями ввода на изображении

Tumanov писал(а):
Цитата:
Подскажите, пожалуйста, решение такой задачи, скорее всего, организовывается с помощью VBA?

Ну да, с VBA будет проще всего.
По таймеру периодически запускается программка и чистит тексты нужных шейпов (по списку или перебором всех шейпов с фильтрацией по определенному признаку).
Хотя, если для простоты запускать такой макрос не по таймеру, а по кнопке, эффект будет в общем-то схожий.
Шейпы перебирать в коллекции ActivePage.Shapes.
Признак для фильтрации нужно придумать. Например, записать нечто отличительное в User ячейку.


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

Страница 1 из 2 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/