Главная страница
    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.46 MB
Время: 0.03 c
3-1181297041
ValeXandr
2007-06-08 14:04
2007.10.14
Работа с QReport


2-1190264949
Kolan
2007-09-20 09:09
2007.10.14
Почему может не работать AutoHotKeys?


1-1185553239
ins
2007-07-27 20:20
2007.10.14
TWebBrowser и правая кнопка мыши


1-1185952348
Dmitry_177
2007-08-01 11:12
2007.10.14
Как сделать чтобы Edit имелл фокус при запуске


9-1161037863
wrl
2006-10-17 02:31
2007.10.14
Подскажите ссылочку на описание формата VRML *.wrl ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский