Главная страница
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.023 c
2-1189687949
Havismat
2007-09-13 16:52
2007.10.14
Про окна, вопрос новичка


15-1189951044
Tirael
2007-09-16 17:57
2007.10.14
как можно перехватить звук в системе?


15-1190103143
Jeer
2007-09-18 12:12
2007.10.14
Кому нужен BlackFish SQL (риторический вопрос)


1-1185947117
YCH.Del
2007-08-01 09:45
2007.10.14
Контролы в ячейках TAdvStringGrid


1-1186040878
pasha_golub
2007-08-02 11:47
2007.10.14
Конфигурация проекта сбрасывается