Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск в Word по определённому стилю


Bratskiy ©   (2006-01-24 12:24:00) 

Привет! У меня опять вопрос по поиску в Word. На это раз мне надо найти текст определённого стиля. У объекта Find я нашел такой метод Set_Style(var prop: OleVariant), судя по всему в нём и устанавливается стиль, который надо найти. Но какой параметр бы я ни передовал выходит ошибка: Method 'Set_Style' not supported by automation object
Вот примерно как я делал  

var
 r,i,s:OleVariant;
 st:string;
.....................
 r:=WD.Content;
 i:=0;
 st:='Заголовок 2';
 repeat inc(i);
 until (WD.Styles.Item(i).NameLocal = st) or (i = WD.Styles.Count);
 s:=WA.ActiveDocument.Styles.Item(i);
 r.Find.ClearFormatting;
 r.Find.Set_Style(s);// Здесь выходит ошибка
........................

Буду очень благодарен, если кто-нибудь поможет.


k2   (2006-01-25 07:04:00) [1]

точно, и так работает :) што ещё раз доказывает лучше недоперемудрить :)


Bratskiy   (2006-01-25 07:00:00) [2]

Спасибо,

Я правда уже чуть-чуть проще сделал (чем в х [3])


 r:=WD.Content;
 r.Find.ClearFormatting;
 s:=WD.Styles.Item(i);
 r.Find.Style:=s;

Вроде работает нормально. Не мог сделать потому-что У Find метод Style почему-то не всплывает (Ctrl + пробел)

И ещё


p := 'Заголовок 2';
st := doc.Styles.Item(p);// Даже не знал что можно имя стиля передовать, думал только индекс


k2   (2006-01-25 06:46:00) [3]

и ещё, на наличие стиля лучше не закладываться, сделать обработочку
 
 ..
 p := 'Заголовок 232';
 try
   st1 := doc.Styles.Item(p);
 except
   MessageBox(0, 'Стиль не найден', 'WordFindExample', 0);
   exit;
 end;
 f.Set_Style(st1);
 ..


k2   (2006-01-25 06:21:00) [4]

to umbra ©   (24.01.06 17:58) [1]
а какой текст он будет искать, если заранее неизвесно :) не посимвольнож :)

to Bratskiy ©
если немножко извратиться, то искать абсолютно также, как мы с вами разбирали в предыдущей ветке:

var
 wapp: WordApplication;
 doc: WordDocument;
 r: OleVariant;
 r1: range;
 found: WordBool;
 p, st: OleVariant;
 f: Find;
begin
 wapp := GetActiveOleObject('Word.Application')as WordApplication;
 doc := wapp.ActiveDocument;
 r1 := doc.content;
 f := r1.Find;
 r := r1;
 f.ClearFormatting;
 p := 'Заголовок 2';
 st := doc.Styles.Item(p);
 f.Set_Style(st);
 repeat
   found := false;
   found := r.find.Execute(EmptyParam, EmptyParam, EmptyParam, EmptyParam,
     EmptyParam, EmptyParam, true, EmptyParam, true, EmptyParam,
     EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
   if found then begin
     r.StartOf(wdCharacter, wdMove);
     r.InsertAfter('Новость:  ');
     r.Move(wdParagraph, 1);
   end;
 until
   not found;
end;


Bratskiy   (2006-01-25 04:22:00) [5]

А, что такое метод-сеттер?
Если такого метода нет, то тогда не понятно почему, когда пишешь Find, потом ставишь точку и нажимамаешь Crtl + пробел всплывает Set_Style.
У меня по условию задачи необходимо найти текст (не ясно заранее какой), который будет заданного стиля. В VBA это делается легко, а вот в Delphi у меня что-то никак не получается.


umbra   (2006-01-24 17:58:00) [6]


> Method 'Set_Style' not supported by automation object

такого публичного метода нет. это метод-сеттер свойства Style. А насчет поиска - надо искать текст, а затем проверять свойство Styleобъекта Find. Если его значение подходит - делаем, что надо, если не подходит - ищем дальше


Наверх

Титульная страница Поиск, карта сайта Написать письмо