Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Вопрос знатокам


Автор: Genius3d 15.6.2007, 23:45
Господин Albinos 
Перекопал уже тонну сайтов и информации. У меня к вам вопрос.

Какие есть варианты поиска текста в ворде, при том чтобы можно было выцепить номер страницы?

вот вариант 1, как я делал:

s:= WordDocument.Range.Text;

Далее уже бегал по этому тексту, НО. Номер страницы там не фигурирует, поскольку колонтитутол является обособленным и непростым объектом Word, который не попадает под действие функции Range

Появился второй вариант:

Count:=WordDocument1.DefaultInterface.Sections.Count;
i:=1;
...      
            
s:=WordDocument1.DefaultInterface.Sections.Item(i).Range.Text;
Ну и далее уже бегаем по s и там ищем, потом перескакиваем на следующий раздел и так далее

я подумал что потом как найдем текст можно попробовать выцепить номер страницы, но все оказалось не так просто.
Для одного раздела у нас могут быть несколько колонтитулов. Причем текст раздела находится отдельно от колонтитулов (в которых находится номер страницы), 
поскольку мы обращаемся к колонтитулу следующим образом:
s:=WordDocument1.DefaultInterface.Sections.Item(i).Footers.Item(k).Range.Text
где k идет от 1 до WordDocument1.DefaultInterface.Sections.Item(i).Footers.Count

Зачем мне нужен номер страницы?


А вот зачем:
var What, Which, Name : OleVariant;
....
What:=wdGoToPage;
Which:=wdGoToNext;
Name:='2';
WordApplication1.Selection.GoTo_(What, Which, EmptyParam, Name);

чтобы при открытии файла у меня курсор указывал на нужное место. 

Конечно можно например найти текст, а потом закрасить его другим текстом, как реализовано в многих поисковиках. Нашел как это делать. Никакой макрос писать не надо, как говорил Hunter 

если кому надо WordDocument.Range(a,b).Font. Color:= clRed; ну или какой другой.

Потом сохраняем файл, но это не выход потому что, если много раз искать то патом весь файл станет желтым).. или красным))...

Вообщем задача состоит в следующем:
Есть куча файлов Doc нужно среди них найти те файлы в которых встречается такое - то слово, выдать кусок текста где оно встречается и открыть файл если пользователь захочет на том месте где это слово найдено. Все сделал, кроме последнего. Из последнего условия функцию поиска переписывал наверное раз 5, теперь у меня есть несколько совершенно различных алгоритмов))...но ниодин неможет открыть файл на том месте где встретилось слово. 

Собственно поэтому я остановился на номере страницы. Потому что он нужен для перехода на нужную страницу.




Автор: Genius3d 16.6.2007, 11:38
Причем тут Дельфи для новичков када у меня работа с OLE.....))))Модератор просто жжет)))

Автор: Guedda 16.6.2007, 13:13
Цитата(Genius3d @  16.6.2007,  12:38 Найти цитируемый пост)
ричем тут Дельфи для новичков када у меня работа с OLE

Потому что это вопрос новичка в OLE  smile

Автор: Snowy 16.6.2007, 13:39

M
Snowy
Просьба ознакомиться с правилами форума. 
Хотя бы с первым пунктом!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)