1

Тема: Код ентера для поля

Привет! У меня в поле прописано:
{ IF { СПИСОК } = Да "Вася был"}

Мне надо, что бы "Из списка выбрано 1" и "Из списка выбрано 1" вставлялись с новой строки. Объясняю зачем: у меня идет вот такой текст:

На заседании были:
а) Дима был{ IF { СПИСОК } = Да "Вася был"}
б) Петя был
в) Алеша был

а) б) в) - это нумерация. Т.е если поставить курсор после Алеша был и нажать ентер, то ниже автоматически появится г)

Так вот, теперь мы выбираем из списка "ДА" и должно появиться так:
а) Дима был
б) Вася был
в) Петя был
г) Алеша был

а если выбрать нет, то сного должно стать
а) Дима был
б) Петя был
в) Алеша был

Реально такое?

2

Re: Код ентера для поля

Можно вообще как-то с имитировать ентер в коде поля?

3

Re: Код ентера для поля

Route пишет:

Можно вообще как-то с имитировать ентер в коде поля?

Лично мне не понятно , что надо сделать.
Во- первых, о каком Worde идет речь?
В Word 2003  под именем (в вашем случае СПИСОК) может быть только закладка.
Куда вставить Enter?  В какое место поля?   
В текст Enter вставляется просто.
Например, чтобы добавить Enter  в конец фразы "Вася был":
1 Установите режим "Коды полей:
2 Выполните Правка-> Заменить: Вася был  на Вася был, потом кнопка "Специальный" и из выпадающео списка выберите "Разрыв строки".

4

Re: Код ентера для поля

Вот пример: внешняя ссылка
Выбираем из списка "нет" потом Ctrl+A и F9, что бы обновить. так же и для "да"
Что бы посмотреть поле жмем Alt+F9.

Но мне надо, что бы текст Вася был вставился в новой строке и для него создалась нумерация, а когда выбрали "нет" наоборот чтоб исчез. Понятно теперь?

5

Re: Код ентера для поля

Route пишет:

Но мне надо, что бы текст Вася был вставился в новой строке и для него создалась нумерация, а когда выбрали "нет" наоборот чтоб исчез.

Половинчатое решение:
a)    Дима был
b)    {if  {ref_имя}=да "Вася был" ""}
c)    Петя был
d)    Алеша был

Если ответить Да,   элемент списка Вася будет вставлен.
Если Нет - будут пустые элементы списка,  которые  во всем документе можно удалить путем 
Правка->Заменить -> ваш Стиль List Paragraf  на пустое значение
Если не устраивает, надо думать дальше.

6

Re: Код ентера для поля

Ну не совсем айс. Тем более мне еще таким же методом в некоторых местах надо будет просто начать предложение с нового абзаца. Ну например:
Вася тусил на диско. {if  {ref_имя}=да "Вася был в очко." "Вася был с дамой."}
И выглядит это должно так:
Вася тусил на диско.
Вася был в очко

Никак нельзя осуществить перенос в пределах кода самого поля? Или может можно как-то в коде поля выполнить макрос, который бы как раз и осуществлял имитацию ентра. Неужели такую элементарную вещь не предусмотрели?

Хм. А может вообще можно как-то сделать так: тот же список, но в самом VBA прописать, что если выбрано ДА тогда делать такой-то код (и вставить код макроса) иначе так та ?!. Ну Вы поняли.

Отредактировано Route (14.03.2011 23:51:55)

7

Re: Код ентера для поля

Route пишет:

Никак нельзя осуществить перенос в пределах кода самого поля? Или может можно как-то в коде поля выполнить макрос, который бы как раз и осуществлял имитацию ентра. Неужели такую элементарную вещь не предусмотрели?

Давайте рассуждать логически (см. фильм “Ирония судьбы …”).
Поле IF  вставляет,  в зависимости от  условия,   ту или иную символьную строку.
Код клавиши Enter можно вставить в  строку в виде символа,   т. е. он будет только  изображаться визуально и никаких действий выполнять не будет.
Если при вводе текста мы в символьной строке нажимаем клавишу Enter, вставляется неотображаемый код перехода на следующую строку (например, 013) и сразу же выполняется  переход на следующую строку.

Таким образом, после сохранения и последующего открытия  документа вы видим либо  символ «Переход строки»,  либо  непосредственый переход на следующую строку (отработал символ «Переход строки»).

Вы предлагаете, чтобы  был реализован еще один набор управляющих символов (в частности,  перехода строки), например, с кодами XXX или ESC+ Enter, которые не были бы видны в документе  (не печатались), и с другой стороны,  при открытии документа  не  отрабатывались (т. е. не выполняли,  например,  переход на следующую строку).

А реальное   отрабатывание таких кодов выполнялось бы только при выделении текста и нажатии клавиши F9.
Таких кодов (управляющих символов),  имхо, Word не предоставляет.

Это, наверное, можно сделать с помощью VBA.
Т. е. вы должны:
1 найти поле IF
2 проверить значение закладки
3 выбрать  подставляемый текст
4 присвоить ему стиль списка
5 вставить его в список

8

Re: Код ентера для поля

Это, наверное, можно сделать с помощью VBA.
Т. е. вы должны:
1 найти поле IF
2 проверить значение закладки
3 выбрать  подставляемый текст
4 присвоить ему стиль списка
5 вставить его в список

Невыносимо сложно smile А можно реализовать вот что я писал:

Хм. А может вообще можно как-то сделать так: тот же список, но в самом VBA прописать, что если из списка выбрано ДА тогда делать такой-то код (и вставить код макроса) иначе так та ?!. Ну Вы поняли.

Можете подкинуть сам код выборки этой? Т.е

IF Значение_списка = "да" then

код макроса

else

код макроса

9

Re: Код ентера для поля

Может не в струю, но:
попробуйте реализовать свой список из полей XE, например {XE "Вася" \t ""\f Был} , а затем в нужном месте собрать список с помощью поля {index \f Был \z "1049" \c "0" \l " "} и присвоить ему нужное форматирование.
У меня так собирается список сокращений, ГОСТов и определений по документу, иногда сложному с вложениями.
"\f Был" - закладка, по которой определяется включать текст "Вася был" в список или нет. Единственное только {XE "Вася" \t ""\f Был} скрытый текст и закладку "\f Был" каждый раз придётся редактировать вручную, но можно и автоматизировать процесс.

Отредактировано Иван (16.03.2011 12:38:43)

Word не может "тупить".
Он - всего лишь программа, выполняющая наши команды.

10

Re: Код ентера для поля

Иван, а можно пример скинуть?

11

Re: Код ентера для поля

Для списка используется стиль "Указатель 1", его нужно отформатировать под Ваши нужды (нумерация, отступы и т.д.)

Post's attachments

Формирование списка.doc 26 Кб, 6 скачиваний с 2011-03-16 

You don't have the permssions to download the attachments of this post.
Word не может "тупить".
Он - всего лишь программа, выполняющая наши команды.

12

Re: Код ентера для поля

Ничего не понял smile Я в кодах этих только вот пытаюсь разобраться. В примере вообще не понимаю, что за скрытый текст, от куда берутся имена и что означает \f Был \z "1049" \c "0" \l " "  sad  Для ослов разжевать никак не получится?  smile  roll

13

Re: Код ентера для поля

Разжёвываю  smile :
\z "1049" \c "0" \l " " - что обозначают эти идентификаторы, точно не помню, но эти идентификаторы нужны чтобы формировался список без указания страниц. По умолчанию поле index ищет поля XE, собирает их в список по алфавиту и выводит через запятую номера страниц, на которых встречаются эти поля.
В примере я написал "Скрытый текст", чтобы показать, где именно собака зарыта. Если сделаете отображение скрытого текста, то увидите, что там 4 поля XE , причём у одного стоит идентификатор \f НеБыл, поэтому текст "Ваня был" не включается в список, если заменить его на  \f Был и обновить поля, список будет такой:
а) Ваня был.
б) Вася был.
в) Коля был.
г) Петя был.
Чтобы добавить новый элемент в список, нужно скопировать поле XE и заменить там "Вася (Ваня и т.д)... был" на нужный текст, при этом не забыв поставить идентификатор "\f Был" или к существующему полю XE добавить "\f Был". Удалить элемент из списка достаточно просто: меняем идентификатор "\f Был" на любой другой или убираем вообще и обновляем поля.
Идея понятна или нет? Если нет, пишите, буду объяснять подробнее.

Отредактировано Иван (16.03.2011 15:27:38)

Word не может "тупить".
Он - всего лишь программа, выполняющая наши команды.

14

Re: Код ентера для поля

Блин совсем нет времени опробовать сейчас. На выходных отпишусь...

15

Re: Код ентера для поля

А вот и я! Тупой вопрос, а как Вы сделали текст скрытым и как мне его обратно сделать видимым?
По идеи текст скрывается: шрифт и там галочка скрытый, но в Вашем документе нет там галочки smile
А еще почему-то когда добавляешь новый элемент EX и жмешь F9, что бы обновить, то он его добавляет и курсор сразу переходит на новую позицию и получается вот так:


Формируемый список:
а) Вася был.
б)
т.е внизу пусто!

Хм, а код собственно и так работает
{index \f БЫЛ}
Только все равно еще один пункт при обновлении добавляет

П.С. Хотя вроде можно настроить все как надо! ладно завтра попробую до конца разобраться...

Отредактировано Route (22.03.2011 23:08:53)

16

Re: Код ентера для поля

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

Word не может "тупить".
Он - всего лишь программа, выполняющая наши команды.