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

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

между закладками ;) [Delphi, Windows]


GanibalLector ©   (2005-01-17 02:05:00) 

Цитата :
Если строку необходимо вставить в определенное место в тексте, то делаем закладку: Вставка=>Закладка в меню Word.
Но лучше использовать две закладки: начало текста и конец. Это может понадобиться в случае замены старого текста на новый(обновление данных).


Решил сделать именно так.Вставляю текст между закладками zk1 и zk4. !!!Между закладками  5 пробелов!!!
Делаю так :

var WordApp,Doc2:OleVariant;
i:integer;
begin
try
WordApp:=GetActiveOleObject('Word.Application');
except
WordApp:=CreateOleObject('Word.Application');
end;
 WordApp.Documents.Open('e:\worddoc.doc');
 Doc2:=WordApp.ActiveDocument;
 WordApp.visible:=true;
 for i:=1 to 5 do begin
 sleep(400);
 WordApp.ActiveDocument.Range(Doc2.Bookmarks.Item('zk1').Range.end,
 Doc2.Bookmarks.Item('zk4').Range.start).Text:='F'+inttostr(i);end;
 Doc2:=Unassigned;
 WordApp:=Unassigned;
end;


Уже после первого цикла закладки по непонятным причинам расположены одинаково.И соответственно на выходе : : F5F4F3F2F1  
Что я сделал неверно?Кто может высказаться по сабжу?


YurikGL   (2005-01-18 09:13:00) [1]


> Набережных С.   (18.01.05 09:07) [4]

Тоже верно... закладка же имеет св-во range у которого есть и конец и начало


YurikGL   (2005-01-18 09:12:00) [2]


> Набережных С.   (18.01.05 09:07) [4]

Тоже верно... закладка же имеет св-во range у которого есть и конец и начало


Набережных С.   (2005-01-18 09:07:00) [3]

>Это может понадобиться в случае замены старого текста на новый

А зачем две закладки? В документе выделяешь нужный участок и вставляешь закдадку. Закладка - все выделенное. Потом примерно так:
Doc2.Bookmarks.Item('zk1').Select;
WordApp.Selection.TypeText(newText);


YurikGL   (2005-01-17 22:35:00) [4]

попробуй вот так с бубном потанцевать

>  WordApp.ActiveDocument.Range(Doc2.Bookmarks.Item('zk1').Range.end +1,
>  Doc2.Bookmarks.Item('zk4').Range.start -1).Text:='F'+inttostr(i);end;

в разных вариациях


GanibalLector   (2005-01-17 22:15:00) [5]

Еще варианты есть?


aus   (2005-01-17 03:46:00) [6]

Попробуй тоже самое сделать в макросе на VBA и проследи по шагам.

Вообще я предпочитаю писать макросы (их отлаживать легче), а потом запускать из приложения один из них. Хоть VBA и не лучший вариант, но в таком случае для меня удобнее.


Наверх

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