![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск в 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. Если его значение подходит - делаем, что надо, если не подходит - ищем дальше