Возникла такая проблема. Нужно сделать отчет в документ Word'а, причем в отчете данные должны быть многострочными, т.е. придется вставлять свой escape'символ. Попытался вставлять #10#13 — два квадратика, #10 или #13 — один квадратик. Но перевода строки так и не удалось добиться.
Причем что интересно — если данные находятся не в таблице, то один только #13 переводит строку без всяких проблем, когда в таблице — ну никак.
Здравствуйте, .silent, Вы писали:
S>Здравствуйте!
S> Возникла такая проблема. Нужно сделать отчет в документ Word'а, причем в отчете данные должны быть многострочными, т.е. придется вставлять свой escape'символ. Попытался вставлять #10#13 — два квадратика, #10 или #13 — один квадратик. Но перевода строки так и не удалось добиться. S> Причем что интересно — если данные находятся не в таблице, то один только #13 переводит строку без всяких проблем, когда в таблице — ну никак.
S> Посоветуйте, плиз, что-нибудь.
Здравствуйте, .silent, Вы писали:
S>Здравствуйте, Rius, Вы писали:
R>>Что-то я не пойму, как здесь связаны Delphi, формирование отчета в Word и функция EditReplace Word'а
S>а зачем тебе это? S>вопрос есть, что еще надо?
вот задам я вопрос:
почему при сохранении изменений в базе прога вылетает, а при вставке новых записей — работает?
и попробуй ответить
S>в документе меняются ключевые слова на наши значения. S>к примеру, S>[Name] меняется на Вася Пупкин
S>а вот [Names], например, должно меняться на:
S>Вася Пупкин S>Борис Ельцин S>Калашников Игорь S>т.е. все это через разделитель строки.
S>я пишу что мне нужно заменить [Names] на что-то там, как раз с помощью функции EditReplace.
S>надеюсь, все объяснил нормально.
не нормально, но в общих чертах...
это делается обычно через закладки (bookmark): составляется документ, в нужных местах ставятся закладки (меню Вставка), и док. сохраняется как шаблон *.dot. далее программно запускается Word, открывается шаблон (автоматически создается документ без назначенного имени), программно же ставится курсор на нужную закладку и вставляется текст. наравне с функцией вставки текста есть и функции печати 'Enter', 'Backspace', 'End Paragraph' и т.п.
а насчет замены... вы в самом Word можете в однострочное поле ввести символ возврата каретки??? так что же пытаетесь программно делать?
Здравствуйте, Rius, Вы писали:
R>а насчет замены... вы в самом Word можете в однострочное поле ввести символ возврата каретки??? так что же пытаетесь программно делать?
у меня есть функция ReplaceByTag(строка_поиска, строка_замены);, которая в самом документе заменяет все с помощью своей функции Replace.
Например, ReplaceByTag('[Name]', UserName). Это одно имя.
Но иногда нужно разделить строки и я пытался вставить #10#13 вместе и по отдельности, но переводится строка только в случае того, если как разделитель стоит #13 и текст находится не в таблице. В таблице не получается.
Здравствуйте, .silent, Вы писали:
S>Здравствуйте, Rius, Вы писали:
R>>а насчет замены... вы в самом Word можете в однострочное поле ввести символ возврата каретки??? так что же пытаетесь программно делать?
S>у меня есть функция ReplaceByTag(строка_поиска, строка_замены);, которая в самом документе заменяет все с помощью своей функции Replace.
S>Например, ReplaceByTag('[Name]', UserName). Это одно имя.
S>Но иногда нужно разделить строки и я пытался вставить #10#13 вместе и по отдельности, но переводится строка только в случае того, если как разделитель стоит #13 и текст находится не в таблице. В таблице не получается.
А попробуйте разделять строки не символами #13#10, а символами ^p. Может быть это поможет? (^p — это спецсимвол Word, обозначающий как раз символ абзаца).
Во всем нужна мера, даже в том, чтобы соблюдать ее.
Здравствуйте, SeLarin, Вы писали:
SL>А попробуйте разделять строки не символами #13#10, а символами ^p. Может быть это поможет? (^p — это спецсимвол Word, обозначающий как раз символ абзаца).
Если Вы имеете в виду знак ¶, то нет, он просто отображается в Word'е, но ничего не переносит.
это я понимаю, просто хотелось более простого решения вроде добавления спец.символов в строку, а тут всю функцию переделывать надо.
но если нельзя, то уж что поделать
Здравствуйте, .silent, Вы писали:
S>Здравствуйте, SeLarin, Вы писали:
SL>>А попробуйте разделять строки не символами #13#10, а символами ^p. Может быть это поможет? (^p — это спецсимвол Word, обозначающий как раз символ абзаца).
S>Если Вы имеете в виду знак ¶, то нет, он просто отображается в Word'е, но ничего не переносит.
Нет. Это для Word — именно символ конца абзаца. По крайней мере, ^p используется как подстановка для поиска и замены конца абзаца...
Здравствуйте, .silent, Вы писали:
S>Здравствуйте!
S> Возникла такая проблема. Нужно сделать отчет в документ Word'а, причем в отчете данные должны быть многострочными, т.е. придется вставлять свой escape'символ. Попытался вставлять #10#13 — два квадратика, #10 или #13 — один квадратик. Но перевода строки так и не удалось добиться. S> Причем что интересно — если данные находятся не в таблице, то один только #13 переводит строку без всяких проблем, когда в таблице — ну никак.
S> Посоветуйте, плиз, что-нибудь.