Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.14;
Скачать: CL | DM;

Вниз

Поиск в Word по определённому стилю   Найти похожие ветки 

 
Bratskiy ©   (2006-01-24 12:24) [0]

Привет! У меня опять вопрос по поиску в 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);// Здесь выходит ошибка
........................

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


 
umbra ©   (2006-01-24 17:58) [1]


> Method "Set_Style" not supported by automation object

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


 
Bratskiy ©   (2006-01-25 04:22) [2]

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


 
k2 ©   (2006-01-25 06:21) [3]

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;


 
k2 ©   (2006-01-25 06:46) [4]

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


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

Спасибо,

Я правда уже чуть-чуть проще сделал (чем в х [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 07:04) [6]

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



Страницы: 1 вся ветка

Текущий архив: 2007.10.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.035 c
15-1189279993
vasIZmax
2007-09-08 23:33
2007.10.14
Традиции программирования


3-1181206449
deras
2007-06-07 12:54
2007.10.14
Можно ли вызвать ХП из триггера и как передать ей параметры?


2-1190037815
F@T@L_Err0r
2007-09-17 18:03
2007.10.14
Регулятор громкости


9-1161443298
Xdebugger
2006-10-21 19:08
2007.10.14
ODE


15-1189636957
Бакук
2007-09-13 02:42
2007.10.14
Англия-Россия-3:0