Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.02.2016, 11:23   #1
regman
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 90
Вопрос Текст Memo > БД > Word

Есть поле Мемо, которое заполняется через свойство Lines выбором нескольких пунктов из Комбобокса. Затем это поле с текстом сохраняется в БД и после чего экспортируется в MS Word сплошным текстом, то есть без разрыва строки. Надо вот эти строки вывести построчно. В Ворде при отображении скрытых символов место переноса/абзаца не отображается вообще никак - пустое место. Это "пустое место" в Нотпаде++ отображается как CRLF. Если напрямую копировать с БД в Ворд - то все вставляется нормально - построчно с символом абзаца в конце. А вот при экспорте - бяда. Кто и что посоветует??
Apache/2.2.23 (Win32) PHP/5.3.18
Win7Pro 64
Vertrigo
regman вне форума Ответить с цитированием
Старый 29.02.2016, 12:06   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А посмотреть как экcпортируешь?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.02.2016, 12:14   #3
regman
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 90
По умолчанию

Код:
W:=CreateOleObject('Word.Application');
W.Documents.Add(ExtractFilePath(Application.ExeName)+'res\cart.dot');
W.Selection.Find.Text:='##_D_GORLO';
W.Selection.Find.Replacement.Text:=ADODataSetPrint.FieldValues['d_gorlo'];
W.Selection.Find.Execute(Replace:=wdReplaceAll);
пробовал делать замену через StringReplace перед самим экспортом, вставляя туда принудительно знак абзаца "^p", который понятен Ворду, но не сработало.
Apache/2.2.23 (Win32) PHP/5.3.18
Win7Pro 64
Vertrigo

Последний раз редактировалось regman; 29.02.2016 в 12:20.
regman вне форума Ответить с цитированием
Старый 29.02.2016, 15:59   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так не пойдет - нужно абзацы создавать. Вставь несколько строк в ворд, сохраняя все действия в макрос. Там есть такая возможность. Потом разбирайся с полученным макросом
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.03.2016, 11:13   #5
regman
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 90
По умолчанию

У меня задача убрать (заменить) значение CRLF в строке перед вставкой в Ворд. Проблема в том, что не могу его отловить нормально. Как еще можно прописать в Делфи эту комбинацию символов?? Да и походу Ворд просто не понимает эту комбинацию.

А запис макроса при вставке текста ничего не дает. Как и перевод строки, который в макросе выглядит как Selection.TypeParagraph

Таки да, при вставке в Ворд, он комбинацию CRLF понимает только в виде Chr(13)+Chr(10), поэтому для нормальной вставки текста построчно использовал функцию StringReplace в таком виде:

Код:
before:=ADODataSet1.FieldValues['recom'];
after:=StringReplace(before, Chr(13)+Chr(10), '^p', [rfReplaceAll, rfIgnoreCase]);
W.Selection.Find.Replacement.Text:=after;
W.Selection.Find.Execute(Replace:=wdReplaceAll);
то есть заменяем Chr(13)+Chr(10) на понятный Ворду символ абзаца/перевода строки ^p и все работает.
Apache/2.2.23 (Win32) PHP/5.3.18
Win7Pro 64
Vertrigo

Последний раз редактировалось regman; 01.03.2016 в 11:22.
regman вне форума Ответить с цитированием
Старый 01.03.2016, 13:30   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А на фонт заменяемого участка текста при таком способе обратил внимание?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.03.2016, 15:50   #7
regman
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 90
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А на фонт заменяемого участка текста при таком способе обратил внимание?
зачем??
Apache/2.2.23 (Win32) PHP/5.3.18
Win7Pro 64
Vertrigo
regman вне форума Ответить с цитированием
Старый 01.03.2016, 15:54   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ну если не важен, то незачем
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранить в текстовый файл текст из Memo и текст из нескольких Edit misher Общие вопросы Delphi 5 02.01.2011 15:37
Текст в колонтитулах в обычный текст в Word 2003 FLOWER2305 Microsoft Office Word 0 14.12.2010 21:33
Компилировать текст из Memo AmbaQ Помощь студентам 6 19.11.2010 20:51
(Memo) на текст D-mon БД в Delphi 4 06.06.2008 11:22
В Memo сделать так, чтобы текст был разного цвета, разноцветный memo Artem Компоненты Delphi 3 07.09.2007 13:40