Страница 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
Открывается информационное окно с номером, типом и именем поля.
Не поможет. Мне нужно знать алгоритм.
Что ж, временно попробую построчно разбивать - такое разбиение, похоже, стандартно для присоединённых форм. По мере возникновения ошибок улучшать буду...