Страница 1 из 1

Как определить позицию поля в секции .Fields

Добавлено: 02 сен 2011, 08:02
Semi-bit
Собственно, задача такова: имеется RTF-форма

Код: Выделить всё

.linkform 'bbb' prototype is 'aaa'
// пропуск...
.Fields
field1
expr1
sGetTune('USER.OWNNAME')
...
.EndFields
...
Мне необходимо определить позицию поля sGetTune('USER.OWNNAME'). Задача осложняется тем, что перед ним могут стоять произвольные поля, в том числе и выражения.

Re: Как определить позицию поля в секции .Fields

Добавлено: 02 сен 2011, 10:28
n0where
var?

Re: Как определить позицию поля в секции .Fields

Добавлено: 02 сен 2011, 10:49
edward_K
позицию где? тем более в RTF - вставте таблицу и будет всегда на одном уровне.

Re: Как определить позицию поля в секции .Fields

Добавлено: 05 сен 2011, 13:46
Semi-bit
Блин, неточно сформулировал. Хочу определить, которым оно по порядку идёт в форме, то есть, какому шаблону поля в форме соответствует определение поля в секции .Fields.

Re: Как определить позицию поля в секции .Fields

Добавлено: 05 сен 2011, 14:09
spark
Semi-bit писал(а):Блин, неточно сформулировал. Хочу определить, которым оно по порядку идёт в форме, то есть, какому шаблону поля в форме соответствует определение поля в секции .Fields.
В каком порядке описаны в .Fields в том порядке и выводятся...

Re: Как определить позицию поля в секции .Fields

Добавлено: 05 сен 2011, 14:55
Semi-bit
Ну так на глаз-то мне это видно, а программу, которая бы смогла определить, что здесь конкретно поле, а там - функция, я написать покамест не смог :)

Re: Как определить позицию поля в секции .Fields

Добавлено: 05 сен 2011, 15:17
KATZ
Semi-bit
Посмотрите здесь, вроде бы перекликается с вашим вопросом, если я его правильно понял.

Re: Как определить позицию поля в секции .Fields

Добавлено: 06 сен 2011, 07:59
Semi-bit
KATZ, перекликается, но не отвечает :) Я хочу сам такую функцию реализовать в своей проге. Пока что думаю подсчитывать количество промежутков между идентификаторами, но как быть со скобками, в которых могут быть как сами поля, так и параметры функций, пока неясно.
Как отличить foo(x) и y (x), где y - переменная (или поле из прототипа), а foo - функция?

Re: Как определить позицию поля в секции .Fields

Добавлено: 06 сен 2011, 09:00
n0where
Для чего надо то?

Re: Как определить позицию поля в секции .Fields

Добавлено: 06 сен 2011, 09:37
Semi-bit
n0where, а вам никогда не хотелось, чтобы при вставке шаблона в текстовую форму Ворд предлагал поля, которые можно сопоставить этому шаблону? Понятное дело, все отчёты переводятся на FastReport, но старых форм остаётся до сих пор куча, и иногда в них надо-таки добавлять поля, что очень неудобно делать вручную.

Кроме того, мне поставлена задача программно установить закладку на шаблон поля, соответствующий конкретному определению поля в секции .Fields.

Re: Как определить позицию поля в секции .Fields

Добавлено: 06 сен 2011, 11:18
edward_K
Гораздо проще будет разбить fields на группы соотв. каждой секции отчета. Понятно что это разово. Макрос конечно универсально, но вопрос турдоемкости - если вы на его создание угрохаете неделю, то за это время можно навести красоту во всех ваших формах и еще соседу помочь. Можно и вообще форму на кусочки разобрать - rtf не такой замороченный формат. В Директуме вообще туда пишут влоб и не парятся например :). Еще вам может помочь, что при компиляции создается temp.frm в Temp - мож там вам будет проще.

Re: Как определить позицию поля в секции .Fields

Добавлено: 06 сен 2011, 11:54
LaaLaa
http://www.tyumbit.ru/gal_forum/viewtop ... 850#p47850
Уточнаю алгоритм действия для страждущих.
Фишка работает только в Галактике (не в FCOM) для linkform

Запустили Галактику с параметром fcenv=on
Открыли окно с выбором интересующего отчета
В закладке "Настройка отчетов" по F4 вызываем исходный текст отчета.
Компилируем "вникуда" форму по Ctrl - F9
После чего ставим курсор на интересующее поле и нажимаем shift-F5
Открывается информационное окно с номером, типом и именем поля.

Re: Как определить позицию поля в секции .Fields

Добавлено: 06 сен 2011, 13:35
Semi-bit
LaaLaa писал(а):http://www.tyumbit.ru/gal_forum/viewtop ... 850#p47850
Уточнаю алгоритм действия для страждущих.
Фишка работает только в Галактике (не в FCOM) для linkform

Запустили Галактику с параметром fcenv=on
Открыли окно с выбором интересующего отчета
В закладке "Настройка отчетов" по F4 вызываем исходный текст отчета.
Компилируем "вникуда" форму по Ctrl - F9
После чего ставим курсор на интересующее поле и нажимаем shift-F5
Открывается информационное окно с номером, типом и именем поля.
Не поможет. Мне нужно знать алгоритм.
Что ж, временно попробую построчно разбивать - такое разбиение, похоже, стандартно для присоединённых форм. По мере возникновения ошибок улучшать буду...